Repository navigation
Review fixes 2026-11-03: load-independent tests, policy glob gap, evidence-pinned README - #4
LUOaini1213 wants to merge 4 commits into
Conversation
- ReplayRunner registers its cancel hook before loading fixtures, so a Stop
pressed during the first load is honored instead of silently dropped. The
cancel test waits on the first replayed event, not a fixed 20 ms sleep, and
a new test cancels before the load finishes.
- Outbox tests use a 2 s client timeout (the timeout test keeps 100 ms): a
client timeout is a retry, which turned exact request counts into two on a
loaded host. The Retry-After assertion measures from before the attempt.
- apps/server/vitest.config.ts raises the per-test and expect.poll ceilings;
passing polls return as soon as they hold, so idle runs are not slower.
- The OTLP smoke helper waits up to 60 s for a cold server start.
- Policy: a glob that expands to .secrets (`.secr*`, `.s?crets`, `.[s]ecrets`,
`.{secrets,x}`) is denied as the comment already claimed; "write ... how to
set OPENAI_API_KEY" is no longer egress. Two routine prompts that stay
denied are pinned as deliberate trade-offs.
- .gitattributes: LF for text, binary for images.
Under 10 concurrent server suites on Windows: before 10/10 runs red
(2-9 failures each), after 10/10 green (191/191).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…st screen - Re-run `npm run benchmark:otlp` at ff2da0d: the previous record (source 5552e1e) no longer matched three of its eight hashed sources. It is kept as docs/evidence/otlp-benchmark-5552e1e.json and named as historical. - scripts/check-evidence.mjs (`npm run check:evidence`, first step of `npm run check` and of CI) fails when a number in README.md or docs/OTLP_DELIVERY.md differs from the evidence JSON, when a hashed source changed since the measurement, when the README names a recovery fault mode the CI smoke test does not exercise, or when a relative Markdown link is broken. - README: first screen says what was built, what was measured (with numbers and evidence links) and the main limits; a Provenance section links the starter import 8d0bd4f and the compare view and lists what was added; "This fork" is gone (the repository is not a GitHub fork); the clone step uses the real URL; terraform/compose checks are marked manual. - CI comments in English, stale test counts dropped, windows-latest added. - package.json description describes this project, not the starter. - docs/SUBMISSION.md keeps the write-up and drops the Devpost click-through steps and the registration link. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Independent review of 13518e4Recommendation: merge after you read the README first screen and Provenance section. The code and test changes hold up. The README now makes claims about attribution and quotes measured numbers, so you should confirm those yourself. I did not merge anything or push to this branch. What I re-ran (Windows 11, Node 24.19.0, i7-11370H, same machine as the new benchmark)
Mutation checks (each guarded thing broken once, then restored)
Small things to know (none blocks the merge)
For you to confirm before merging
🤖 Generated with Claude Code |
…comment `cat ./.secr*/demo*` and `tar czf out.tgz workspace/.s?crets` were still allowed, because a glob word was only recognised after whitespace, a quote, `=`, `(` or `:`. A `/` now counts as a word boundary too, and both commands are pinned in the glob test (removing the `/` makes it fail). The check-evidence header said it fails when the README names a fault mode the recovery smoke test does not exercise. It checks the other direction: each fault mode recorded in otlp-recovery.json must appear in the README and in verify-otlp-recovery.mjs. The comment now says so. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Second independent review (head 2d581e2)Recommendation: merge after you read the README first screen and the Provenance section. The code, tests and evidence check hold up. I pushed one small fix commit (2d581e2) and corrected two lines of the PR body. Nothing was merged. Bypass found and fixed in 2d581e2
Re-run on Windows 11, Node 24.19.0, i7-11370H
check:evidence mutations (temp copy, not covered by the first review)
What I could not verify
For you to decide
🤖 Generated with Claude Code |
Tests only; policy.ts is unchanged. - Egress: "write the ARK_API_KEY to notes.txt" and "Explain how to write the API key to notes.txt" stay denied, so the "how to" exclusion cannot grow to cover a prompt where `to` is a destination. - A bare regex `.*` in a prompt stays allowed. - Known false negatives are pinned as allowed: letterless globs (`.???????/d*`, `.*/d*`), a quote-split name and a backslash path. The README says the gate has false negatives "pinned in policy.test.ts"; until now only false positives were. - Known false positives are pinned as denied: `ls .s*` and regex text `.*ts`. Each new case was broken once: widening or removing the "how to" exclusion, dropping the letter requirement and removing the glob rule each fail a test. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Third independent review (head 3148ce0)Recommendation: merge after you read the README first screen and the Provenance section. The code, tests and evidence check hold up. I pushed one tests-only commit (3148ce0). Nothing was merged. What I re-ran (Windows 11, Node 24.19.0, i7-11370H)
The benchmark numbers reproduce only roughlyI ran
The committed numbers are real and sit at the quiet end of this range. The conclusion holds in every run: the durable arm costs several times more. But "12.1 ms" is one run of 40 samples on a shared laptop, so do not quote it as a stable figure. The docs already say the numbers are host-specific, so I left the wording alone. Whether to add a range is your call. Commit 3148ce0 (tests only,
|
Fixes from the 2026-11-03 portfolio review. Every finding was re-checked on the current
main(09b4cdb, after PR #3) before any change.Findings
ReplayRunner.run()registered its cancel hook only afterawait this.load(), so a Stop during the first fixture load was dropped. The hook is now registered before the first await, and a cancel seen after loading throwsRunCancelledError. The cancel test waits on the first replayed event, not a fixed 20 ms sleep, and a new test cancels before the load finishes. Outbox tests used a 100 ms client timeout, and a client timeout means a retry, so on a loaded host "exactly 1 request" became 2. They now use 2 s; the timeout test keeps 100 ms. The Retry-After assertion measures from a point before the attempt.apps/server/vitest.config.tsraises the per-test ceiling (30 s) and theexpect.pollceiling (10 s). These are ceilings, not sleeps. The OTLP smoke helper now waits up to 60 s for a cold server start. CI addswindows-latest(Node 24).8d0bd4f...main, and the list of added modules (checked againstgit diff --name-status 8d0bd4f HEAD). "This fork" is gone because GitHub reportsfork=false.package.jsonnow describes this project. LICENSE is unchanged (team repo). Naming team members, if any, is for the owner to decide.cat .secr*/demo*was allowed. A glob that expands to.secretsis now denied (.secr*,.s?crets,.[s]ecrets,.{secrets,x}, also after a/as in./.secr*, added in review commit 2d581e2). Regex-like.*foo(but not.*ts, which also matches.secretsas a glob and is denied),.cache/*,.git*and.github/...stay allowed, and both sets are tested. "Write a README section that explains how to set the OPENAI_API_KEY ..." was denied because thetoin "how to" was read as a destination. It is now allowed and pinned. Two routine prompts stay denied on purpose, and a test with a comment explains the trade-off: "send it in the Authorization header" (credential-egress) and "paste their API key and display it masked" (print-ark-secret).npm run benchmark:otlpwas re-run at ff2da0d on this machine (Node 24.19.0, Windows, i7-11370H). The old record is kept asotlp-benchmark-5552e1e.jsonand labelled historical. Newnpm run check:evidence(first step ofnpm run checkand of CI) fails on: doc/README numbers that differ from the JSON, a hashed source that changed since the measurement, a fault mode recorded inotlp-recovery.jsonthat the README does not name or the CI recovery smoke test does not exercise (the reverse direction is not checked), and broken relative Markdown links.terraform fmtanddocker compose configare marked as manual, not CI. The H1 now says "Glass Box Trace Plane", matching the repo description.docs/SUBMISSION.mdkeeps the write-up and drops the click-through steps and the bit.ly registration link.git grep bit.lyandls docs/*.xmlboth return nothing.Each new check fails once
replay-runner.tsglobReachesProtectedDircall(?<!\bhow )lookbehindcheck:evidenceotlp-outbox.ts, a README fault mode, a link target, the platform word (7 mutations)Commands run (Windows 11, Node 24.19.0)
npm cinpm run checkon 09b4cdb before any change: exit 0npm run checkafter: exit 0. check:evidence OK, tests 5 + 191 + 80, all smokes PASSnpm run build && npm run benchmark:otlp(new evidence)npx vitest runin apps/server, before and afterSuggested repo metadata (not changed)
The description is accurate. If you want the result in it: "TikTok TechJam 2026 Track 1 (Glass Box): span waterfall, redaction, secret-exfiltration gate and durable OTLP export on the Volc Agent Launchpad starter". Possible extra topics:
typescript,fastify,codex.Left for the owner
🤖 Generated with Claude Code