Compare commits
5
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d858c9f8b7 | ||
|
|
704910ca3b | ||
|
|
cceea407e2 | ||
|
|
b617b80f68 | ||
|
|
93200bb446 |
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,10 @@
|
||||
# Bradford
|
||||
|
||||
Builder seat, Codex gpt-6.1-sol, started by Sage under Q246 and mos-1572. Owns the push check row:
|
||||
`scripts/push-check.sh`, which passes a binary only when an approved review candidate lists its path and sha256
|
||||
(docs/plans/2026-10-24_push-guard-binary-manifest.md, #1825).
|
||||
|
||||
No launcher in this directory. The seat runs as a T3 thread and works in its own worktree. It has no credentials of its
|
||||
own; it pushes only its own `bradford/*` branches through the repository credential helper (mos-0981), never `refactor`,
|
||||
`main` or another seat's branch. Poe gives the first Codex review and Dewey the Opus 5.5 landing review (mos-1542,
|
||||
mos-1571). Registered by Sage on 2026-10-24 so the queue can name the seat as row owner (store.mjs isSeatDir).
|
||||
@@ -0,0 +1,162 @@
|
||||
# Row 327 — reviewed binary push check (#1825)
|
||||
|
||||
2026-10-24 Bradford, branch bradford/row327, base b617b80f6.
|
||||
|
||||
## Plan and boundaries
|
||||
|
||||
Implement the scratch check's ordered tokens in scripts/push-check.sh, using an
|
||||
embedded Node program for byte-safe git paths and SHA-256 blob hashing. Bash is
|
||||
the public entry point; Node is already a repository requirement. Git commands
|
||||
use explicit resolved object IDs, disable external diff/textconv, and inspect
|
||||
committed bytes. No queue writes, hook changes, binary evidence, or live state.
|
||||
Fetch is opt-in. Read reviewed rows with the queue package rows() API rooted in
|
||||
the caller's repository; this preserves canonical/witness/replay checks.
|
||||
|
||||
Only the latest round counts; any changes receipt blocks that round. A matching
|
||||
approval authorizes exactly the manifest path/hash, or a path changed from the
|
||||
commit candidate's first parent with matching committed blob hash and mode.
|
||||
Deleted binaries need no candidate. Multiple --row values form a union.
|
||||
|
||||
Add scratch-only integration coverage in scripts/test-push-check.sh. Reuse queue
|
||||
test fixture helpers to bootstrap real scratch queues, then use queue verbs to
|
||||
open rounds and record receipts. All git writes, bare remotes and queues remain
|
||||
under TMPDIR. Test fail-closed ordering and five required mutants, generated as
|
||||
text copies in scratch. No old tests are modified. Add the TOOLS entry.
|
||||
|
||||
Every run needs Sage CLEAR; run timeout -k 10. Record plain-text results here or
|
||||
in this packet. After green checks, commit and push only bradford/row327 through
|
||||
the repository helper, send Sage and Poe tip/base/path sha256 manifest, and move
|
||||
327 in-review. Sage owns request posting and landing; Dewey reviews once there.
|
||||
|
||||
## Recovery and choices
|
||||
|
||||
Initial worktree queue next refused linked-worktree access as designed. Queue
|
||||
claim is performed from the canonical checkout; production reads in the guard
|
||||
retain the same refusal rather than invent a worktree override.
|
||||
|
||||
Requested Sage ruling on AGENTS log appends outside the brief's owned paths.
|
||||
|
||||
Sage sage-3989: lead handles BUILD-LOG and SESSIONS at landing. Session entry:
|
||||
2026-10-24 Bradford — row 327 / #1825 — implementation and scratch verification
|
||||
in this packet; outcome to be appended after acceptance.
|
||||
|
||||
Implementation note: commit candidates use an explicit first-parent diff (empty
|
||||
tree for a root commit), with rename detection disabled, like verify-commit.
|
||||
The changes-veto case has both an approval and a changes receipt; a veto mutant
|
||||
would otherwise still fail for lack of approval and provide false confidence.
|
||||
A receipt for another candidate cannot be produced through queue verbs: the
|
||||
suite corrupts only a scratch queue and expects the production reader to refuse.
|
||||
Diff color, external diff and textconv are disabled so scans inspect plain git
|
||||
output. Paths are read from NUL-delimited records (including spaces/tabs).
|
||||
|
||||
## Verification (Sage CLEAR sage-3991)
|
||||
|
||||
First new-suite run red: my whitespace-path fixture attempted a manifest path
|
||||
that the queue intentionally forbids. Corrected the fixture to a commit
|
||||
candidate, which can contain that git path. Production queue code and old tests
|
||||
remain unchanged. Raw first-run output is test-run-1.txt.
|
||||
|
||||
Second run green: PASS push-check 22 checks; KILLED skip-hash,
|
||||
accept-changes, earlier-round, working-tree, no-row. test-run-2.txt holds the
|
||||
plain-text receipt. bash -n both scripts and git diff --check passed. Runs used
|
||||
TMPDIR recorded in tmpdir.txt and timeout -k 10 240; all generated binary bytes
|
||||
were in disposable scratch repositories, never in this checkout or evidence.
|
||||
The slot was used for only the authorized new suite and syntax/diff checks.
|
||||
No claim of the lead's full scripts/test-*.sh landing gate is made here.
|
||||
|
||||
Final inspection after the first green run found a path-decoding concern: lossy
|
||||
UTF-8 decoding can conflate distinct git filenames. Hardened NUL-delimited path
|
||||
decoding to reject invalid UTF-8, and quote newline-containing paths in refusal
|
||||
output to preserve one STOP line. Added scratch cases for both. Requested a new
|
||||
CLEAR (bradford-0005) because the previous slot had already been released.
|
||||
|
||||
Final run (sage-3994 CLEAR) green on final code: PASS push-check 24 checks,
|
||||
all five mutants KILLED again, bash -n both scripts and git diff --check passed.
|
||||
Receipt: test-run-3.txt. The guard rejects non-UTF-8 git paths as environment
|
||||
errors rather than comparing replacement characters; newline paths remain
|
||||
checkable through commit candidates and refusals quote them on one line.
|
||||
|
||||
Acceptance for the builder stage: ordered tokens and stop behavior, explicit
|
||||
base/fetch, exact blob manifest/commit checks, latest-round/veto checks, deletion,
|
||||
log/FF/secrets/attribution refusals, and all required mutants are covered. Queue
|
||||
reads use rows() with production validation; tests use only scratch queues.
|
||||
Candidate-mismatched receipts are impossible through the queue API and are
|
||||
covered by a corrupt scratch queue refusing its read. The lead's full-suite gate,
|
||||
Poe first review, Dewey landing review, and adoption for Sage's next push remain
|
||||
landing stages. No hooks, role policy, credentials or other seats' paths changed.
|
||||
|
||||
## Poe first review R1 (poe-0010) — changes
|
||||
|
||||
cceea407e has a blocking subdirectory bypass: ls-tree without --full-tree can
|
||||
omit an existing binary outside the caller cwd, making it look deleted.
|
||||
Accepted the finding. Git now anchors all invocations at the repository root,
|
||||
ls-tree uses --full-tree, and diff/diff-tree use --no-relative. EXPECTED_LOG still
|
||||
resolves from the original caller cwd. Added outside-cwd and nested-binary cases
|
||||
under diff.relative=true: unreviewed stops, reviewed manifest/commit passes.
|
||||
No old test changed. New run requires Sage CLEAR before execution.
|
||||
|
||||
R1 verification under sage-3999 CLEAR: test-run-4.txt records PASS 29 checks
|
||||
and KILLED all five required mutants. Syntax and diff whitespace checks passed.
|
||||
A second bounded run used the new suite against cceea407e's script copied under
|
||||
TMPDIR: r1-regression-red.txt records the outside-cwd unreviewed binary reaching
|
||||
NO_BINARY/PUSH_READY (actual exit 0, expected 1). Thus the new regression detects
|
||||
the reviewed bug, while the revised guard refuses it. No code changed between
|
||||
the green run and this old-candidate reproduction. All runs used timeout -k 10.
|
||||
|
||||
Holding claimant queue writes per sage-3999 until Boyd finishes row 309's record.
|
||||
Last acknowledged row 327 state is in-progress (bradford-0010, revision 3868).
|
||||
|
||||
## Dewey landing review B1 (dewey-0956) — changes
|
||||
|
||||
Read the invited review body at /mnt/storage/scratch/tmp/dew327vWXloCT/body.md.
|
||||
B1 identifies a brief-level gap: numstat follows candidate/host git attributes,
|
||||
so *.bin diff makes a NUL-containing blob disappear from the binary-only set.
|
||||
The production script indeed filters numstat before reading any blob, consistent
|
||||
with that data flow. Proposed correction: enumerate every changed numstat path,
|
||||
skip absent/non-blob entries at SHA, classify binary when numstat says binary OR
|
||||
committed blob has NUL among first 8000 bytes. Read with cat-file, never worktree.
|
||||
Test committed .gitattributes, info/attributes, and core.attributesFile overrides
|
||||
in scratch; reject with no row, allow exact reviewed bytes; add NUL-scan mutant.
|
||||
Sage owns the brief amendment and next CLEAR/queue sequencing.
|
||||
|
||||
N1 acknowledged: candidate-equality check is defense in depth; invalid receipt
|
||||
cannot pass queue replay, so the corrupt-queue case does not isolate that check.
|
||||
N2/N3 recorded as described in review, without optional secrets/reader changes.
|
||||
N4 planned hardening: refuse unconfirmed durable tail notes from rows() with
|
||||
exit 2, with a real scratch witness-prefix case rather than a test-only reader.
|
||||
No test run or queue write started for B1/N4 before Sage CLEAR.
|
||||
|
||||
Sage sage-4013/4015 authorizes B1 and N4 within the brief; amendment committed on
|
||||
refactor at 9042754c4 (read with git show, no branch change). Fix and tests written
|
||||
before requesting CLEAR as directed. Tests cover all three attribute sources,
|
||||
approved manifest success under each override, exact 7999/8000 offset boundary,
|
||||
and a real prefix-witness rollback to yield an unconfirmed approval tail.
|
||||
Added only the requested sixth mutant, skip-nul-scan; the original five remain.
|
||||
No new production configuration knobs, no secrets-diff change, no queue writes.
|
||||
Will demonstrate red against the prior candidate using the new tests, then green
|
||||
against revised code, under the approved slot. Full landing gate remains Sage's.
|
||||
|
||||
After Dewey's round-2 CHANGES record (comment 31522, rev3876), Sage sage-4016
|
||||
released only the claimant return to in-progress. Acknowledged:
|
||||
`ok bradford-0017 rev 3877 row 327 in-review→in-progress`.
|
||||
No other queue write before the next in-review candidate move.
|
||||
Test slot remains pending Sage CLEAR after Gyro's build.
|
||||
|
||||
## Amendment 1 verification (sage-4017 CLEAR)
|
||||
|
||||
b1-regression-red.txt: new tests against 704910ca3 reproduce attributes-hidden
|
||||
asset.bin reaching NO_BINARY/PUSH_READY with exit0 instead of exit1.
|
||||
n4-regression-red.txt: revised code with only the N4 check removed lets the real
|
||||
scratch unconfirmed approval tail reach BINARY_REVIEWED/PUSH_READY, exit0 rather
|
||||
than exit2. These are expected negative controls; neither changed committed code.
|
||||
|
||||
Final full new-suite run is green: test-run-5.txt records PASS 38 checks and
|
||||
KILLED skip-hash, accept-changes, earlier-round, working-tree, no-row, skip-nul-scan.
|
||||
All runs used timeout -k 10 240 with the same scratch TMPDIR; no old tests were
|
||||
changed or run. bash -n both scripts and git diff --check also passed. No source
|
||||
changes followed this green run. Sage's full landing gate is still separate.
|
||||
|
||||
Scope in the final delta: classify all changed present blobs using numstat OR
|
||||
first-8000-byte NUL; fail closed on queue unconfirmed-tail notes; regression cases
|
||||
and requested sixth mutant; TOOLS entry and this plain-text packet. B1's brief
|
||||
amendment is Sage's 9042754c4; this branch does not edit the brief or queue files.
|
||||
@@ -0,0 +1,27 @@
|
||||
node:internal/modules/run_main:107
|
||||
triggerUncaughtException(
|
||||
^
|
||||
|
||||
AssertionError [ERR_ASSERTION]: LOG_OK
|
||||
FF_OK
|
||||
NO_BINARY
|
||||
SECRETS_CLEAN
|
||||
NO_ATTRIBUTION
|
||||
PUSH_READY ee394f31d1e52751716e2413049f41b2f3072e65..76acc948149e718091fcd3f3807257e752a6616e
|
||||
|
||||
|
||||
|
||||
0 !== 1
|
||||
|
||||
at Object.check (file:///home/jwoltje/.t3/worktrees/mosaic-stack/bradford-row327/[eval1]:44:12)
|
||||
at file:///home/jwoltje/.t3/worktrees/mosaic-stack/bradford-row327/[eval1]:100:7
|
||||
at process.processTicksAndRejections (node:internal/process/task_queues:104:5) {
|
||||
generatedMessage: false,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: 0,
|
||||
expected: 1,
|
||||
operator: 'strictEqual',
|
||||
diff: 'simple'
|
||||
}
|
||||
|
||||
Node.js v26.8.1
|
||||
@@ -0,0 +1,27 @@
|
||||
node:internal/modules/run_main:107
|
||||
triggerUncaughtException(
|
||||
^
|
||||
|
||||
AssertionError [ERR_ASSERTION]: LOG_OK
|
||||
FF_OK
|
||||
BINARY_REVIEWED 1
|
||||
SECRETS_CLEAN
|
||||
NO_ATTRIBUTION
|
||||
PUSH_READY c1a8a1e9b8c3988874a8f7a35afab7c06aea94a5..325cd3671a7bf70b9a3aee60f4446bc93594a12a
|
||||
|
||||
|
||||
|
||||
0 !== 2
|
||||
|
||||
at Object.check (file:///home/jwoltje/.t3/worktrees/mosaic-stack/bradford-row327/[eval1]:44:12)
|
||||
at file:///home/jwoltje/.t3/worktrees/mosaic-stack/bradford-row327/[eval1]:121:7
|
||||
at process.processTicksAndRejections (node:internal/process/task_queues:104:5) {
|
||||
generatedMessage: false,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: 0,
|
||||
expected: 2,
|
||||
operator: 'strictEqual',
|
||||
diff: 'simple'
|
||||
}
|
||||
|
||||
Node.js v26.8.1
|
||||
@@ -0,0 +1,27 @@
|
||||
node:internal/modules/run_main:107
|
||||
triggerUncaughtException(
|
||||
^
|
||||
|
||||
AssertionError [ERR_ASSERTION]: LOG_OK
|
||||
FF_OK
|
||||
NO_BINARY
|
||||
SECRETS_CLEAN
|
||||
NO_ATTRIBUTION
|
||||
PUSH_READY 896bdf0ef56596c67d2dc427275743c46026e832..ad9f9c86112fadafef4d4854f46bd9994fe2fe5d
|
||||
|
||||
|
||||
|
||||
0 !== 1
|
||||
|
||||
at Object.check (file:///home/jwoltje/.t3/worktrees/mosaic-stack/bradford-row327/[eval1]:44:12)
|
||||
at file:///home/jwoltje/.t3/worktrees/mosaic-stack/bradford-row327/[eval1]:130:7
|
||||
at process.processTicksAndRejections (node:internal/process/task_queues:104:5) {
|
||||
generatedMessage: false,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: 0,
|
||||
expected: 1,
|
||||
operator: 'strictEqual',
|
||||
diff: 'simple'
|
||||
}
|
||||
|
||||
Node.js v26.8.1
|
||||
@@ -0,0 +1,21 @@
|
||||
node:internal/modules/run_main:107
|
||||
triggerUncaughtException(
|
||||
^
|
||||
|
||||
AssertionError [ERR_ASSERTION]: queue: candidate manifest path must be a repo-relative path: "space tab\tasset.bin"
|
||||
|
||||
|
||||
2 !== 1
|
||||
|
||||
at Object.round (file:///home/jwoltje/.t3/worktrees/mosaic-stack/bradford-row327/[eval1]:61:12)
|
||||
at file:///home/jwoltje/.t3/worktrees/mosaic-stack/bradford-row327/[eval1]:116:7
|
||||
at process.processTicksAndRejections (node:internal/process/task_queues:104:5) {
|
||||
generatedMessage: false,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: 2,
|
||||
expected: 1,
|
||||
operator: 'strictEqual',
|
||||
diff: 'simple'
|
||||
}
|
||||
|
||||
Node.js v26.8.1
|
||||
@@ -0,0 +1,6 @@
|
||||
PASS push-check 22 checks
|
||||
KILLED skip-hash
|
||||
KILLED accept-changes
|
||||
KILLED earlier-round
|
||||
KILLED working-tree
|
||||
KILLED no-row
|
||||
@@ -0,0 +1,6 @@
|
||||
PASS push-check 24 checks
|
||||
KILLED skip-hash
|
||||
KILLED accept-changes
|
||||
KILLED earlier-round
|
||||
KILLED working-tree
|
||||
KILLED no-row
|
||||
@@ -0,0 +1,6 @@
|
||||
PASS push-check 29 checks
|
||||
KILLED skip-hash
|
||||
KILLED accept-changes
|
||||
KILLED earlier-round
|
||||
KILLED working-tree
|
||||
KILLED no-row
|
||||
@@ -0,0 +1,7 @@
|
||||
PASS push-check 38 checks
|
||||
KILLED skip-hash
|
||||
KILLED accept-changes
|
||||
KILLED earlier-round
|
||||
KILLED working-tree
|
||||
KILLED no-row
|
||||
KILLED skip-nul-scan
|
||||
@@ -0,0 +1 @@
|
||||
/mnt/storage/scratch/tmp/YPrPwR
|
||||
@@ -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.
|
||||
@@ -1365,3 +1365,28 @@ public sign-in smoke and a forged-loopback 401 check; rollback drops flags
|
||||
before middleware. Same-uid callers can still read the file; separate service
|
||||
uid is Jason's question on #385. The Authentik allowed-uid file remains an
|
||||
identity input and is never reused for proof.
|
||||
|
||||
## `scripts/push-check.sh` — verify a prospective push
|
||||
|
||||
`scripts/push-check.sh SHA EXPECTED_LOG [--row N]... [--base-ref REF] [--fetch]`
|
||||
checks the repository at the caller's cwd; it never pushes or writes the queue.
|
||||
Git checks cover the full repository even from a subdirectory; EXPECTED_LOG is
|
||||
resolved relative to the original caller. Non-UTF-8 git paths refuse with exit 2.
|
||||
EXPECTED_LOG must contain exactly `git log --oneline BASE..SHA` (including its
|
||||
newlines). BASE defaults to `refs/remotes/origin/refactor`; `--base-ref` overrides
|
||||
it. Only `--fetch` fetches origin, before resolving BASE.
|
||||
|
||||
Success prints `LOG_OK`, `FF_OK`, `NO_BINARY` or `BINARY_REVIEWED n`,
|
||||
`SECRETS_CLEAN`, `NO_ATTRIBUTION`, then `PUSH_READY BASE..SHA` as the last line.
|
||||
A changed present blob counts as binary when numstat marks it binary or its
|
||||
first 8000 committed bytes contain NUL, regardless of git attributes. Each
|
||||
present binary needs its committed blob sha256 and exact path in an approved
|
||||
latest-round candidate from a supplied row. A `changes` receipt blocks that round.
|
||||
Commit candidates authorize only changed paths with matching bytes and mode.
|
||||
Deleted binaries need no review. Queue reads retain canonical-checkout checks
|
||||
and refuse unconfirmed durable tails with exit 2.
|
||||
|
||||
Exit 0 means ready; 1 means refusal (`STOP reason`, always the last line); 2 means
|
||||
usage or environment error. A refusal never prints later success tokens.
|
||||
`timeout -k 10 240 bash scripts/test-push-check.sh` exercises isolated scratch
|
||||
repositories and the six required mutants; set TMPDIR to a scratch filesystem.
|
||||
@@ -0,0 +1,103 @@
|
||||
# Push check in the repository, with reviewed binaries
|
||||
|
||||
Written 2026-10-24 by Sage for Mos's mos-1572 ("Go with A for the guard"), after rows 265 and 310
|
||||
raised the binary question (mos-1570, sage-3978).
|
||||
|
||||
## Brief: push-check.sh passes a binary only when the reviewed candidate lists its path and sha256
|
||||
|
||||
**Why.** The lead's push check is a scratch script, `/mnt/storage/scratch/sage-r64/pushcheck.sh`
|
||||
(mos-0856/0857), so nobody has reviewed it and no test covers it. Its `NO_BINARY` step refuses any
|
||||
path that `git diff --numstat BASE SHA` reports as binary (`-` in the first column). Row 265 had to
|
||||
waive that step by hand for 22 gzip logs. Row 310 (W2) will need committed WASM, fonts and test blobs.
|
||||
Mos chose option A: keep the binary check, and let a binary through only when its path and sha256
|
||||
appear in the candidate a reviewer approved. Whether any large binary lands at all is a separate
|
||||
question for Jason (Vikunja 618). This row builds the guard, not that answer.
|
||||
|
||||
**Read first.**
|
||||
- The scratch script, copied under "The scratch script today" at the end of this brief. Don't read
|
||||
`/mnt/storage/scratch/sage-r64` itself; it's Sage's scratch.
|
||||
- `packages/queue/README.md`, sections on `move ID in-review` (manifest and commit candidates) and
|
||||
`review verify-commit`. `packages/queue/src/review.mjs` for how a round's candidate and its receipts
|
||||
are stored. Running `scripts/mosaic queue show N` prints them.
|
||||
- `docs/plans/2026-10-20_force-push-guard.md`, row 211 (Darkwing, in progress). That row owns
|
||||
`scripts/git-hooks/pre-push`, the hook install and `scripts/slot-busy.sh`. Don't touch those files,
|
||||
and don't wire this check into a hook.
|
||||
|
||||
**What ships.**
|
||||
|
||||
1. `scripts/push-check.sh SHA EXPECTED_LOG [--row N]...` (new). It runs the scratch script's steps in
|
||||
the same order and prints the same tokens, so the lead's push sequence only changes its path:
|
||||
`LOG_OK`, `FF_OK`, `NO_BINARY` or `BINARY_REVIEWED <n>`, `SECRETS_CLEAN`, `NO_ATTRIBUTION`, then
|
||||
`PUSH_READY BASE..SHA` as the last line. Every refusal prints one `STOP <reason>` line and exits 1.
|
||||
A usage or environment error exits 2. It works in the repository the caller's cwd is in. The base
|
||||
ref defaults to `refs/remotes/origin/refactor`, and `--base-ref REF` overrides it for tests. A fetch
|
||||
happens only when `--fetch` is given, and the lead's sequence passes it.
|
||||
2. The binary step. For each path that `git diff --numstat BASE SHA` marks binary and that exists at
|
||||
SHA (a deleted binary needs no review):
|
||||
- compute the sha256 of the blob at `SHA:path` (`git cat-file blob`, not the working tree);
|
||||
- look for an approved candidate among the `--row` rows. A round counts only when it is the row's
|
||||
latest round and has a receipt with verdict `approve` whose candidate equals that round's
|
||||
candidate. A `changes` receipt in the same round blocks it;
|
||||
- for a manifest candidate, the manifest must hold the line `<sha256> <path>` exactly;
|
||||
- for a commit candidate, use the same rule as `queue review verify-commit`. The path must be one the
|
||||
candidate changed from its first parent, and the sha256 of the candidate's blob must equal SHA's;
|
||||
- no match prints `STOP binary <path> <sha256> not in a reviewed candidate`. With no `--row`, any
|
||||
binary stops, which is today's behaviour.
|
||||
Read the queue only through `scripts/mosaic queue show N` or the queue package's read functions.
|
||||
Never write the queue or post anything.
|
||||
3. The secret scan and the attribution check stay as they are. A binary passes the secret scan only
|
||||
through the review above. Decompressing gzip to scan it is a separate row if anyone wants it
|
||||
(mos-1570). Don't add it here.
|
||||
4. `scripts/test-push-check.sh` (new), run by `timeout -k 10` like the other suites. It builds a
|
||||
scratch bare remote, a scratch clone and a scratch queue. It never touches origin, the canonical
|
||||
`docs/plans/queue.json` or a seat's queue lock. If the queue CLI can't read a scratch queue without a
|
||||
full scratch copy of the repository, use a scratch copy. If that is impractical too, stop and ask
|
||||
Sage before inventing a test-only override. Cases:
|
||||
- a text-only range prints `NO_BINARY` and `PUSH_READY`;
|
||||
- an unlisted binary stops, naming the path;
|
||||
- a listed path with a different sha256 stops;
|
||||
- an approved manifest candidate passes and prints `BINARY_REVIEWED 1`;
|
||||
- an approved commit candidate passes. One whose blob for that path differs from SHA's stops;
|
||||
- a round with a `changes` receipt, a superseded earlier round, and an approve receipt for a
|
||||
different candidate each stop;
|
||||
- a deleted binary passes with no `--row`;
|
||||
- a non-fast-forward SHA, a log mismatch, an attribution line and a planted fake secret each stop,
|
||||
and nothing after the stop prints;
|
||||
- the last line is `PUSH_READY` only on success, so `| tail -1 | grep -q '^PUSH_READY '` is safe.
|
||||
5. Mutants, each killed by the test: skip the sha256 comparison; accept a `changes` round; accept an
|
||||
earlier round; read the working tree instead of the blob; let a binary through when `--row` is absent.
|
||||
6. `docs/TOOLS.md`: one entry for `push-check.sh` with usage, the tokens and the exit codes.
|
||||
|
||||
**Files owned.** `scripts/push-check.sh`, `scripts/test-push-check.sh`, the new `docs/TOOLS.md` entry,
|
||||
and your `agents/<seat>/work/queue-<row>/` packet (BUILD.md, plain-text evidence). Anything else needs a
|
||||
brief amendment.
|
||||
|
||||
**Out of scope.** The pre-push hook and slot check (row 211). Deciding whether W2's WASM or W1's data
|
||||
lands (Jason, Vikunja 618). Gzip scanning. Retiring the scratch script, which Sage does after landing.
|
||||
|
||||
**Gate.** A separate Codex thread does the first review. Dewey reviews once on the landing candidate
|
||||
(guards go to a Claude reviewer, mos-1542). `scripts/test-push-check.sh` and every other
|
||||
`scripts/test-*.sh` are green on Sage's landing gate, and the mutants are killed. Done when Sage's next
|
||||
push runs through `scripts/push-check.sh` instead of the scratch script. Evidence is plain text
|
||||
(BRIEF-TEMPLATE, mos-1570). Use a TMPDIR from `mktemp -d /mnt/storage/scratch/tmp/XXXXXX`.
|
||||
|
||||
### The scratch script today
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# Push checks for an explicit sha (mos-0856/0857). Usage: pushcheck.sh SHA EXPECTED_LIST_FILE
|
||||
# EXPECTED_LIST_FILE holds the exact `git log --oneline origin/refactor..SHA` lines, newest first.
|
||||
set -o pipefail
|
||||
cd /mnt/storage/src/mosaic-stack || exit 9
|
||||
SHA=$(git rev-parse --verify "$1^{commit}") || { echo "STOP sha"; exit 9; }
|
||||
git fetch -q origin || { echo "STOP fetch"; exit 9; }
|
||||
BASE=$(git rev-parse refs/remotes/origin/refactor) || exit 9
|
||||
diff <(git log --oneline "$BASE..$SHA") "$2" && echo LOG_OK || { echo "STOP log"; exit 1; }
|
||||
git merge-base --is-ancestor "$BASE" "$SHA" && echo FF_OK || { echo "STOP ff"; exit 1; }
|
||||
[ "$(git diff --numstat "$BASE" "$SHA" | awk '$1=="-"' | wc -l)" = 0 ] && echo NO_BINARY || { echo "STOP binary"; exit 1; }
|
||||
if git diff "$BASE" "$SHA" | grep -E '^\+' | grep -iqE 'BEGIN [A-Z ]*PRIVATE KEY|ghp_[A-Za-z0-9]{20}|sk-ant-[A-Za-z0-9-]{10}|xox[bp]-|AKIA[0-9A-Z]{16}|(token|secret|password)["'"'"' ]*[:=] *["'"'"'][A-Za-z0-9_\-]{24,}'; then echo "STOP secrets"; exit 1; fi
|
||||
echo SECRETS_CLEAN
|
||||
if git log --format=%B "$BASE..$SHA" | grep -iqE 'co-authored-by|generated with'; then echo "STOP attribution"; exit 1; fi
|
||||
echo NO_ATTRIBUTION
|
||||
echo "PUSH_READY $BASE..$SHA"
|
||||
```
|
||||
Executable
+127
@@ -0,0 +1,127 @@
|
||||
#!/bin/bash
|
||||
# Check an explicit committed push range. Fetch is opt-in; never pushes.
|
||||
command -v node >/dev/null 2>&1 || { echo 'STOP node unavailable'; exit 2; }
|
||||
exec node --input-type=module - "$@" <<'JS'
|
||||
import { spawnSync } from 'node:child_process';
|
||||
import { readFileSync } from 'node:fs';
|
||||
import { createHash } from 'node:crypto';
|
||||
import { join } from 'node:path';
|
||||
import { pathToFileURL } from 'node:url';
|
||||
|
||||
const stop = (reason, code = 1) => { console.log(`STOP ${reason}`); process.exit(code); };
|
||||
let gitRoot = process.cwd();
|
||||
const git = (...args) => {
|
||||
const r = spawnSync('git', args, { cwd: gitRoot, maxBuffer: 256 * 1024 * 1024 });
|
||||
if (r.error || r.status !== 0) throw new Error('git');
|
||||
return r.stdout;
|
||||
};
|
||||
// Git paths must round-trip as UTF-8 before comparing them with queue paths.
|
||||
const pathsText = bytes => new TextDecoder('utf-8', { fatal: true, ignoreBOM: true }).decode(bytes);
|
||||
const shownPath = path => /[\r\n]/.test(path) ? JSON.stringify(path) : path;
|
||||
const hash = bytes => createHash('sha256').update(bytes).digest('hex');
|
||||
const text = (...args) => git(...args).toString('utf8').trimEnd();
|
||||
const resolve = ref => text('rev-parse', '--verify', '--end-of-options', `${ref}^{commit}`);
|
||||
const argv = process.argv.slice(2);
|
||||
if (argv.length < 2) stop('usage: push-check.sh SHA EXPECTED_LOG [--row N]... [--base-ref REF] [--fetch]', 2);
|
||||
const [ref, expectedFile] = argv.splice(0, 2);
|
||||
let baseRef = 'refs/remotes/origin/refactor', fetch = false;
|
||||
const rowIds = new Set();
|
||||
while (argv.length) {
|
||||
const flag = argv.shift();
|
||||
if (flag === '--fetch' && !fetch) fetch = true;
|
||||
else if (flag === '--row' && /^[1-9][0-9]*$/.test(argv[0] ?? '') && Number.isSafeInteger(Number(argv[0]))) rowIds.add(Number(argv.shift()));
|
||||
else if (flag === '--base-ref' && argv[0] && !argv[0].startsWith('-')) baseRef = argv.shift();
|
||||
else stop('usage', 2);
|
||||
}
|
||||
let sha, base, expected;
|
||||
try {
|
||||
// Resolve the log against the original caller, then anchor every Git command
|
||||
// at the repository root. Queue reads retain their production cwd checks.
|
||||
expected = readFileSync(expectedFile);
|
||||
gitRoot = text('rev-parse', '--show-toplevel');
|
||||
sha = resolve(ref);
|
||||
}
|
||||
catch { stop('sha or expected log unavailable', 2); }
|
||||
if (fetch) { try { git('fetch', '-q', 'origin'); } catch { stop('fetch', 2); } }
|
||||
try { base = resolve(baseRef); } catch { stop('base ref unavailable', 2); }
|
||||
try {
|
||||
if (!git('log', '--oneline', `${base}..${sha}`).equals(expected)) stop('log');
|
||||
console.log('LOG_OK');
|
||||
try { git('merge-base', '--is-ancestor', base, sha); } catch { stop('ff'); }
|
||||
console.log('FF_OK');
|
||||
|
||||
// --no-renames keeps -z numstat to exactly one path per record. Never parse
|
||||
// quoted path output or consult working-tree bytes.
|
||||
const changedPaths = pathsText(git('diff', '--no-relative', '--no-color', '--no-ext-diff', '--no-textconv', '--no-renames', '--numstat', '-z', base, sha))
|
||||
.split('\0').filter(Boolean).map(record => {
|
||||
const first = record.indexOf('\t'), second = record.indexOf('\t', first + 1);
|
||||
return { path: record.slice(second + 1), binary: record.startsWith('-\t-\t') };
|
||||
});
|
||||
const tree = commit => {
|
||||
const entries = new Map();
|
||||
for (const entry of pathsText(git('ls-tree', '--full-tree', '-r', '-z', commit)).split('\0').filter(Boolean)) {
|
||||
const tab = entry.indexOf('\t');
|
||||
const [mode, type, oid] = entry.slice(0, tab).split(' ');
|
||||
entries.set(entry.slice(tab + 1), { mode, type, oid });
|
||||
}
|
||||
return entries;
|
||||
};
|
||||
const have = tree(sha);
|
||||
// Attributes can force a binary to appear as text in numstat. Inspect raw
|
||||
// committed bytes as well, following Git's first-8000-byte NUL rule.
|
||||
const present = changedPaths.filter(({ path, binary }) => {
|
||||
const entry = have.get(path);
|
||||
if (!entry || entry.type !== 'blob') return false;
|
||||
return binary || git('cat-file', 'blob', entry.oid).subarray(0, 8000).includes(0);
|
||||
}).map(({ path }) => path);
|
||||
let approved = [];
|
||||
if (present.length && rowIds.size) {
|
||||
let rows;
|
||||
try {
|
||||
const root = text('rev-parse', '--show-toplevel');
|
||||
const { rows: readRows } = await import(pathToFileURL(join(root, 'packages/queue/src/store.mjs')).href);
|
||||
const result = readRows({ cwd: process.cwd(), env: process.env });
|
||||
if (result.code !== 0) throw new Error('queue');
|
||||
if (result.err.some(note => /unconfirmed tail|not confirmed durable/.test(note))) stop('queue unconfirmed tail', 2);
|
||||
rows = result.rows;
|
||||
for (const id of rowIds) if (!rows.some(r => r.id === id)) throw new Error('row');
|
||||
} catch { stop('queue unavailable or invalid', 2); }
|
||||
for (const row of rows.filter(r => rowIds.has(r.id))) {
|
||||
const round = row.review?.rounds.at(-1);
|
||||
if (!round || round.receipts?.some(r => r.verdict === 'changes')) continue;
|
||||
if (!round.receipts?.some(r => r.verdict === 'approve' && r.candidate === round.candidate.digest)) continue;
|
||||
approved.push(round.candidate);
|
||||
}
|
||||
}
|
||||
const candidates = new Map();
|
||||
for (const c of approved) {
|
||||
if (c.kind !== 'commit') continue;
|
||||
const candidateTree = tree(c.digest);
|
||||
let parent;
|
||||
try { parent = text('rev-parse', '--verify', `${c.digest}^1`); }
|
||||
catch { parent = text('hash-object', '-t', 'tree', '/dev/null'); }
|
||||
const changed = new Set(pathsText(git('diff-tree', '--no-relative', '-r', '--no-renames', '--name-only', '-z', parent, c.digest)).split('\0').filter(Boolean));
|
||||
candidates.set(c.digest, { candidateTree, changed });
|
||||
}
|
||||
for (const path of present) {
|
||||
const h = have.get(path);
|
||||
const digest = hash(git('cat-file', 'blob', h.oid));
|
||||
const matches = approved.some(c => {
|
||||
if (c.kind === 'manifest') return c.text.split('\n').includes(`${digest} ${path}`);
|
||||
const { candidateTree, changed } = candidates.get(c.digest);
|
||||
const entry = candidateTree.get(path);
|
||||
return changed.has(path) && entry?.type === 'blob' && entry.mode === h.mode && hash(git('cat-file', 'blob', entry.oid)) === digest;
|
||||
});
|
||||
if (!matches) stop(`binary ${shownPath(path)} ${digest} not in a reviewed candidate`);
|
||||
}
|
||||
console.log(present.length ? `BINARY_REVIEWED ${present.length}` : 'NO_BINARY');
|
||||
|
||||
const diff = git('diff', '--no-relative', '--no-color', '--no-ext-diff', '--no-textconv', base, sha).toString('utf8');
|
||||
const secret = /BEGIN [A-Z ]*PRIVATE KEY|ghp_[A-Za-z0-9]{20}|sk-ant-[A-Za-z0-9-]{10}|xox[bp]-|AKIA[0-9A-Z]{16}|(token|secret|password)["' ]*[:=] *["'][A-Za-z0-9_\-]{24,}/i;
|
||||
if (diff.split('\n').some(line => line.startsWith('+') && secret.test(line))) stop('secrets');
|
||||
console.log('SECRETS_CLEAN');
|
||||
if (/co-authored-by|generated with/i.test(text('log', '--format=%B', `${base}..${sha}`))) stop('attribution');
|
||||
console.log('NO_ATTRIBUTION');
|
||||
console.log(`PUSH_READY ${base}..${sha}`);
|
||||
} catch { stop('git or environment error', 2); }
|
||||
JS
|
||||
Executable
+256
@@ -0,0 +1,256 @@
|
||||
#!/bin/bash
|
||||
# All repositories, queue writes, remotes and mutants are disposable scratch.
|
||||
set -euo pipefail
|
||||
ROOT=$(cd -- "$(dirname -- "$0")/.." && pwd)
|
||||
exec node --input-type=module - "$ROOT" "$@" <<'JS'
|
||||
import assert from 'node:assert/strict';
|
||||
import { spawnSync } from 'node:child_process';
|
||||
import { readFileSync, writeFileSync, mkdirSync, mkdtempSync, rmSync } from 'node:fs';
|
||||
import { tmpdir } from 'node:os';
|
||||
import { join } from 'node:path';
|
||||
import { pathToFileURL } from 'node:url';
|
||||
import { createHash } from 'node:crypto';
|
||||
const root = process.argv[2];
|
||||
const { scratchRepo, genesisCommitted, cli } = await import(pathToFileURL(join(root, 'packages/queue/tests/helpers.mjs')));
|
||||
const target = process.argv[3] ?? join(root, 'scripts/push-check.sh');
|
||||
const sha256 = bytes => createHash('sha256').update(bytes).digest('hex');
|
||||
const binary = Buffer.from([0, 1, 2, 3]);
|
||||
const digest = sha256(binary);
|
||||
const cleanups = [];
|
||||
let count = 0;
|
||||
function fixture() {
|
||||
const repo = scratchRepo({ after: fn => cleanups.push(fn) });
|
||||
genesisCommitted(repo);
|
||||
const run = (args, by = 'darkwing', allow = false) => {
|
||||
const r = cli(repo, args, { by });
|
||||
assert.ok(r.code === 0 || allow, r.err);
|
||||
return r;
|
||||
};
|
||||
run(['move', '6', 'blocked', '--reason', 'paused', '--op', 'block-six-0001']);
|
||||
run(['move', '9', 'in-progress', '--op', 'start-nine-0001']);
|
||||
run(['set', '9', 'reviewers', 'dewey,filbert', '--op', 'set-reviewers-0001'], 'sage');
|
||||
// A real local bare remote and clone, with no network or origin access.
|
||||
const bare = join(repo.base, 'remote.git');
|
||||
repo.g('init', '--bare', '-q', bare);
|
||||
repo.g('clone', '-q', bare, join(repo.base, 'clone'));
|
||||
repo.g('remote', 'add', 'origin', bare);
|
||||
const base = repo.g('rev-parse', 'HEAD').trim();
|
||||
repo.g('update-ref', 'refs/remotes/origin/refactor', base);
|
||||
const commit = (path, bytes, message = 'content') => {
|
||||
if (bytes === null) repo.g('rm', '--', path);
|
||||
else { writeFileSync(join(repo.root, path), bytes); repo.g('add', '--', path); }
|
||||
repo.g('commit', '-q', '-m', message);
|
||||
return repo.g('rev-parse', 'HEAD').trim();
|
||||
};
|
||||
const check = (sha, extra = [], expectedCode = 0, reason = null, script = target, cwd = repo.root) => {
|
||||
const log = join(repo.base, 'expected.log');
|
||||
writeFileSync(log, repo.g('log', '--oneline', `${base}..${sha}`));
|
||||
const r = spawnSync('bash', [script, sha, log, ...extra], { cwd, env: repo.env, encoding: 'utf8' });
|
||||
assert.equal(r.status, expectedCode, `${r.stdout}\n${r.stderr}`);
|
||||
const lines = r.stdout.trim().split('\n');
|
||||
if (expectedCode === 0) assert.match(lines.at(-1), /^PUSH_READY /);
|
||||
else {
|
||||
assert.equal(lines.filter(s => s.startsWith('STOP ')).length, 1, r.stdout);
|
||||
assert.match(lines.at(-1), reason ?? /^STOP /);
|
||||
assert.ok(!r.stdout.includes('PUSH_READY'), r.stdout);
|
||||
}
|
||||
count++;
|
||||
return r.stdout;
|
||||
};
|
||||
let n = 0;
|
||||
const round = (candidate, verdict = 'approve') => {
|
||||
n++;
|
||||
const r = run(['move', '9', 'in-review', '--candidate', candidate, '--op', `review-nine-000${n}`], 'darkwing', true);
|
||||
// Missing dummy transport credentials fails the request, after opening a
|
||||
// valid round. Recording a receipt is cooperative and needs no credential.
|
||||
assert.equal(r.code, 1, r.out + r.err);
|
||||
const row = JSON.parse(run(['show', '9']).out);
|
||||
const c = row.review.rounds.at(-1).candidate.digest;
|
||||
run(['review', 'record', '9', '--verdict', verdict, '--candidate', c, '--comment', String(n), '--op', `verdict-nine-00${n}`], 'filbert');
|
||||
};
|
||||
const manifest = (d = digest, path = 'asset.bin') => {
|
||||
const file = join(repo.base, 'manifest.sha256');
|
||||
writeFileSync(file, `${d} ${path}\n`);
|
||||
return file;
|
||||
};
|
||||
return { repo, run, base, commit, check, round, manifest };
|
||||
}
|
||||
try {
|
||||
{
|
||||
const f = fixture();
|
||||
const sha = f.commit('text.txt', 'hello\n');
|
||||
assert.match(f.check(sha), /NO_BINARY\nSECRETS_CLEAN\nNO_ATTRIBUTION\nPUSH_READY /);
|
||||
f.check(sha, ['--base-ref', f.base]);
|
||||
f.check(sha, ['--bad-option'], 2, /^STOP usage/);
|
||||
// Explicit fetch goes only to the scratch remote.
|
||||
f.check(sha, ['--fetch']);
|
||||
const wrong = join(f.repo.base, 'wrong.log'); writeFileSync(wrong, 'wrong\n');
|
||||
const r = spawnSync('bash', [target, sha, wrong], { cwd: f.repo.root, env: f.repo.env, encoding: 'utf8' });
|
||||
assert.equal(r.status, 1); assert.equal(r.stdout, 'STOP log\n'); count++;
|
||||
f.repo.g('update-ref', 'refs/remotes/origin/refactor', sha);
|
||||
const log = join(f.repo.base, 'empty.log'); writeFileSync(log, '');
|
||||
const ff = spawnSync('bash', [target, f.base, log], { cwd: f.repo.root, env: f.repo.env, encoding: 'utf8' });
|
||||
assert.equal(ff.status, 1); assert.equal(ff.stdout, 'LOG_OK\nSTOP ff\n'); count++;
|
||||
}
|
||||
// B1: attributes may add binary classifications, never hide NUL blobs.
|
||||
for (const source of ['tree', 'info', 'config']) {
|
||||
const f = fixture();
|
||||
if (source === 'tree') f.commit('.gitattributes', '*.bin diff\n');
|
||||
if (source === 'info') writeFileSync(join(f.repo.gitDir, 'info/attributes'), '*.bin diff\n');
|
||||
if (source === 'config') {
|
||||
const attributes = join(f.repo.base, 'attributes'); writeFileSync(attributes, '*.bin diff\n');
|
||||
f.repo.g('config', 'core.attributesFile', attributes);
|
||||
}
|
||||
const sha = f.commit('asset.bin', binary);
|
||||
f.check(sha, [], 1, /^STOP binary asset.bin /);
|
||||
f.round(f.manifest());
|
||||
assert.match(f.check(sha, ['--row', '9']), /BINARY_REVIEWED 1\n/);
|
||||
}
|
||||
// The content rule includes byte 7999, and excludes byte 8000.
|
||||
for (const offset of [7999, 8000]) {
|
||||
const f = fixture(), bytes = Buffer.alloc(8001, 65); bytes[offset] = 0;
|
||||
f.commit('.gitattributes', '*.bin diff\n');
|
||||
const sha = f.commit('asset.bin', bytes);
|
||||
if (offset === 7999) f.check(sha, [], 1, /^STOP binary asset.bin /);
|
||||
else assert.match(f.check(sha), /NO_BINARY\n/);
|
||||
}
|
||||
// N4: an approval beyond the durable witness is visible, not authority.
|
||||
{
|
||||
const f = fixture(), sha = f.commit('asset.bin', binary);
|
||||
const witness = join(f.repo.gitDir, 'mosaic-queue.head');
|
||||
const durable = readFileSync(witness);
|
||||
f.round(f.manifest());
|
||||
writeFileSync(witness, durable);
|
||||
const visible = f.run(['show', '9']);
|
||||
assert.match(visible.err, /not confirmed durable/);
|
||||
f.check(sha, ['--row', '9'], 2, /^STOP queue unconfirmed tail$/);
|
||||
}
|
||||
{
|
||||
const f = fixture(), sha = f.commit('asset.bin', binary);
|
||||
f.check(sha, [], 1, /^STOP binary asset.bin /);
|
||||
f.round(f.manifest('0'.repeat(64)));
|
||||
f.check(sha, ['--row', '9'], 1, /^STOP binary asset.bin /);
|
||||
}
|
||||
{
|
||||
const f = fixture(), sha = f.commit('asset.bin', binary);
|
||||
f.round(f.manifest());
|
||||
writeFileSync(join(f.repo.root, 'asset.bin'), 'working tree differs');
|
||||
assert.match(f.check(sha, ['--row', '9']), /BINARY_REVIEWED 1\n/);
|
||||
f.check(sha, [], 1, /^STOP binary asset.bin /);
|
||||
const other = f.commit('asset.bin', Buffer.from([0, 8, 9]));
|
||||
// The working tree is the approved version; the pushed blob isn't.
|
||||
writeFileSync(join(f.repo.root, 'asset.bin'), binary);
|
||||
f.check(other, ['--row', '9'], 1, /^STOP binary asset.bin /);
|
||||
}
|
||||
{
|
||||
const f = fixture(), sha = f.commit('asset.bin', binary);
|
||||
f.round(sha);
|
||||
assert.match(f.check(sha, ['--row', '9']), /BINARY_REVIEWED 1\n/);
|
||||
const other = f.commit('asset.bin', Buffer.from([0, 7]));
|
||||
f.check(other, ['--row', '9'], 1, /^STOP binary asset.bin /);
|
||||
}
|
||||
{
|
||||
const f = fixture(), sha = f.commit('space tab\tasset.bin', binary);
|
||||
f.round(sha);
|
||||
assert.match(f.check(sha, ['--row', '9']), /BINARY_REVIEWED 1\n/);
|
||||
}
|
||||
{
|
||||
const f = fixture(), sha = f.commit('line\nbreak.bin', binary);
|
||||
f.check(sha, [], 1, /^STOP binary "line\\nbreak.bin" /);
|
||||
writeFileSync(Buffer.concat([Buffer.from(f.repo.root + '/'), Buffer.from([255]), Buffer.from('.bin')]), binary);
|
||||
f.repo.g('add', '-A'); f.repo.g('commit', '-q', '-m', 'invalid UTF-8 path');
|
||||
f.check(f.repo.g('rev-parse', 'HEAD').trim(), [], 2, /^STOP git or environment error$/);
|
||||
}
|
||||
{
|
||||
const f = fixture(), sha = f.commit('asset.bin', binary);
|
||||
const cwd = join(f.repo.root, 'nested'); mkdirSync(cwd);
|
||||
f.repo.g('config', 'diff.relative', 'true');
|
||||
f.check(sha, [], 1, /^STOP binary asset.bin /, target, cwd);
|
||||
f.round(f.manifest());
|
||||
assert.match(f.check(sha, ['--row', '9'], 0, null, target, cwd), /BINARY_REVIEWED 1\n/);
|
||||
const relativeLog = spawnSync('bash', [target, sha, '../../expected.log', '--row', '9'], { cwd, env: f.repo.env, encoding: 'utf8' });
|
||||
assert.equal(relativeLog.status, 0, relativeLog.stdout + relativeLog.stderr);
|
||||
assert.match(relativeLog.stdout.trim().split('\n').at(-1), /^PUSH_READY /); count++;
|
||||
}
|
||||
{
|
||||
const f = fixture(), cwd = join(f.repo.root, 'nested'); mkdirSync(cwd);
|
||||
const sha = f.commit('nested/asset.bin', binary);
|
||||
f.repo.g('config', 'diff.relative', 'true');
|
||||
f.check(sha, [], 1, /^STOP binary nested\/asset.bin /, target, cwd);
|
||||
f.round(sha);
|
||||
assert.match(f.check(sha, ['--row', '9'], 0, null, target, cwd), /BINARY_REVIEWED 1\n/);
|
||||
}
|
||||
{
|
||||
const f = fixture();
|
||||
f.commit('asset.bin', binary);
|
||||
const unrelated = f.commit('text.txt', 'unrelated\n');
|
||||
f.round(unrelated);
|
||||
f.check(unrelated, ['--row', '9'], 1, /^STOP binary asset.bin /);
|
||||
}
|
||||
{
|
||||
const f = fixture(), sha = f.commit('asset.bin', binary);
|
||||
f.round(f.manifest(), 'changes');
|
||||
const row = JSON.parse(f.run(['show', '9']).out);
|
||||
f.run(['review', 'record', '9', '--verdict', 'approve', '--candidate', row.review.rounds.at(-1).candidate.digest, '--comment', '2', '--op', 'approve-dewey-0001'], 'dewey');
|
||||
f.check(sha, ['--row', '9'], 1, /^STOP binary asset.bin /);
|
||||
}
|
||||
{
|
||||
const f = fixture(), sha = f.commit('asset.bin', binary);
|
||||
f.round(f.manifest());
|
||||
f.run(['move', '9', 'in-progress', '--op', 'revise-nine-0001']);
|
||||
f.round(f.manifest('0'.repeat(64)));
|
||||
f.check(sha, ['--row', '9'], 1, /^STOP binary asset.bin /);
|
||||
}
|
||||
{
|
||||
const f = fixture(), sha = f.commit('asset.bin', binary);
|
||||
f.round(f.manifest());
|
||||
// This shape cannot be recorded by the queue. Its read API must reject
|
||||
// tampered receipts before the guard can treat them as authority.
|
||||
const path = f.repo.queuePath;
|
||||
const doc = JSON.parse(readFileSync(path));
|
||||
doc.rows.find(r => r.id === 9).review.rounds.at(-1).receipts[0].candidate = '0'.repeat(64);
|
||||
writeFileSync(path, JSON.stringify(doc));
|
||||
f.check(sha, ['--row', '9'], 2, /^STOP queue unavailable or invalid$/);
|
||||
}
|
||||
{
|
||||
const f = fixture(), added = f.commit('asset.bin', binary);
|
||||
f.repo.g('update-ref', 'refs/remotes/origin/refactor', added);
|
||||
const deleted = f.commit('asset.bin', null);
|
||||
// Explicit base retains the check helper's original expected log range.
|
||||
f.repo.g('update-ref', 'refs/remotes/origin/refactor', f.base);
|
||||
assert.match(f.check(deleted, ['--base-ref', added], 1, /^STOP log$/), /STOP log/);
|
||||
const log = join(f.repo.base, 'delete.log'); writeFileSync(log, f.repo.g('log', '--oneline', `${added}..${deleted}`));
|
||||
const r = spawnSync('bash', [target, deleted, log, '--base-ref', added], { cwd: f.repo.root, env: f.repo.env, encoding: 'utf8' });
|
||||
assert.equal(r.status, 0, r.stdout); assert.match(r.stdout, /NO_BINARY\n/); assert.match(r.stdout.trim().split('\n').at(-1), /^PUSH_READY /); count++;
|
||||
}
|
||||
for (const [message, content, reason, prefix] of [
|
||||
['content', 'password="' + 'a'.repeat(30) + '"\n', 'secrets', 'LOG_OK\nFF_OK\nNO_BINARY\n'],
|
||||
['Generated with example', 'hello\n', 'attribution', 'LOG_OK\nFF_OK\nNO_BINARY\nSECRETS_CLEAN\n'],
|
||||
]) {
|
||||
const f = fixture(), sha = f.commit('text.txt', content, message);
|
||||
assert.equal(f.check(sha, [], 1), `${prefix}STOP ${reason}\n`);
|
||||
}
|
||||
console.log(`PASS push-check ${count} checks`);
|
||||
if (!process.argv[3]) {
|
||||
const dir = mkdtempSync(join(tmpdir(), 'push-check-mutants-'));
|
||||
cleanups.push(() => rmSync(dir, { recursive: true, force: true }));
|
||||
const source = readFileSync(target, 'utf8');
|
||||
const mutants = [
|
||||
['skip-hash', "c.text.split('\\n').includes(`${digest} ${path}`)", "c.text.split('\\n').some(line => line.endsWith(` ${path}`))"],
|
||||
['accept-changes', "round.receipts?.some(r => r.verdict === 'changes')", 'false'],
|
||||
['earlier-round', 'row.review?.rounds.at(-1)', 'row.review?.rounds.at(0)'],
|
||||
['working-tree', "hash(git('cat-file', 'blob', h.oid))", 'hash(readFileSync(path))'],
|
||||
['no-row', 'if (!matches) stop(', 'if (!matches && rowIds.size) stop('],
|
||||
['skip-nul-scan', " || git('cat-file', 'blob', entry.oid).subarray(0, 8000).includes(0)", ''],
|
||||
];
|
||||
for (const [name, before, after] of mutants) {
|
||||
assert.ok(source.includes(before), name);
|
||||
const file = join(dir, `${name}.sh`); writeFileSync(file, source.replace(before, after));
|
||||
const r = spawnSync('timeout', ['-k', '10', '120', 'bash', join(root, 'scripts/test-push-check.sh'), file], { encoding: 'utf8', maxBuffer: 4 << 20 });
|
||||
assert.equal(r.status, 1, `${name} survived or infrastructure failed: ${r.status}\n${r.stdout}\n${r.stderr}`);
|
||||
assert.match(r.stderr, /AssertionError/, r.stderr);
|
||||
console.log(`KILLED ${name}`);
|
||||
}
|
||||
}
|
||||
} finally { for (const fn of cleanups.reverse()) fn(); }
|
||||
JS
|
||||
Reference in new issue
Block a user