Documentation scope
Documentation scope
Loaded 1 documentation files (depth ≤2, cap 6; external links disabled).
Greenhorn / literal onboarding audit
Verified path
The documented verification command `npm test` exited 0 in the isolated executor.
Evidence, in order
A proposed command, its independent ruling, and its Docker result share one step. Nothing is silently skipped.
Documentation scope
Loaded 1 documentation files (depth ≤2, cap 6; external links disabled).
Command lifecycle
npm installLICENSEDFRICTIONDocumentation evidence$ npm install
The README explicitly lists the proposed command for installing dev dependencies and running the example server, and again for running tests.
SHELL RECEIVED: YESAccepted command reached the isolated Docker executor.
added 417 packages, and audited 418 packages in 26s 50 packages are looking for funding run `npm fund` for details 36 vulnerabilities (1 low, 7 moderate, 16 high, 12 critical) To address issues that do not require attention, run: npm audit fix To address all issues (including breaking changes), run: npm audit fix --force Run `npm audit` for details. npm warn deprecated sntp@1.0.9: This module moved to @hapi/sntp. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues. npm warn deprecated boom@2.10.1: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial). npm warn deprecated cryptiles@2.0.5: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial). npm warn deprecated hoek@2.16.3: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial). npm warn deprecated uuid@3.4.0: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). npm warn deprecated har-validator@2.0.6: this library is no longer supported npm warn deprecated hawk@3.1.3: This module moved to @hapi/hawk. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues. npm warn deprecated to-iso-string@0.0.2: to-iso-string has been deprecated, use @segment/to-iso-string instead. npm warn deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. npm warn deprecated glob@7.2.3: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me npm warn deprecated whatwg-encoding@1.0.5: Use @exodus/bytes instead for a more spec-conformant and faster implementation npm warn deprecated w3c-hr-time@1.0.2: Use your platform's native performance.now() and performance.timeOrigin. npm warn deprecated request-promise-native@1.0.9: request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142 npm warn deprecated left-pad@1.3.0: use String.prototype.padStart() npm warn deprecated domexception@1.0.1: Use your platform's native DOMException instead npm warn deprecated abab@2.0.6: Use your platform's native atob() and btoa() methods instead npm warn deprecated ejs@1.0.0: Critical security bugs fixed in 2.5.5 npm warn deprecated coffee-script@1.12.7: CoffeeScript on NPM has moved to "coffeescript" (no hyphen) npm warn deprecated transformers@2.1.0: Deprecated, use jstransformer npm warn deprecated constantinople@3.0.2: Please update to at least constantinople 3.1.1 npm warn deprecated request@2.79.0: request has been deprecated, see https://github.com/request/request/issues/3142 npm warn deprecated rollup-plugin-node-resolve@3.4.0: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-node-resolve. npm warn deprecated jade@1.11.0: Jade …truncated
Command lifecycle
npm testLICENSEDFRICTIONDocumentation evidence$ npm test
The command is explicitly documented, so it is licensed. Running it may encounter friction because the documented prerequisite npm install is not evidenced in the supplied state.
SHELL RECEIVED: YESAccepted command reached the isolated Docker executor.
> page@1.11.6 test
> jshint index.js test/tests.js && mocha test/tests.js
Html5 history navigation
✓ Should dispatch when going to a hash on same path
on page load
✓ should invoke the matching callback
✓ should invoke the matching async callbacks
on redirect
✓ should load destination page
✓ should work with short alias
✓ should load done within redirect
on exit
✓ should run when exiting the page
✓ should run async callbacks when exiting the page
✓ should only run on matched routes
✓ should use the previous context
no dispatch
✓ should use the previous context when not dispatching
page.back
✓ should move back to history
✓ should decrement page.len on back()
✓ calling back() when there is nothing in the history should go to the given path
✓ calling back with nothing in the history and no path should go to the base
ctx.querystring
✓ should default to ""
✓ should expose the query string
✓ should accommodate URL encoding
ctx.pathname
✓ should default to ctx.path
✓ should omit the query string
✓ should accommodate URL encoding
ctx.params
✓ should always be URL-decoded
✓ should be an object
✓ should handle optional first param
✓ should have the original routePath
ctx.handled
✓ should skip unhandled redirect if exists
links dispatcher
✓ should invoke the callback
✓ should handle trailing slashes in URL
✓ should handle trailing slashes in route
✓ should invoke the callback with the right params
✓ should not invoke the callback
✓ should not fire when navigating to a different domain
✓ works with shadow paths
dispatcher
✓ should ignore query strings
✓ should ignore query strings with params
✓ should invoke the matching callback
✓ should handle trailing slashes in path
✓ should handle trailing slashes in route
✓ should populate ctx.params
✓ should not include hash in ctx.pathname
when next() is invoked
✓ should invoke subsequent matching middleware
not found
✓ should invoke the not found callback
Configuration
✓ Can disable popstate
✓ Can disable click handler
Hashbang option enabled
✓ Using hashbang, url's pathname not included in path
on page load
✓ should invoke the matching callback
✓ should invoke the matching async callbacks
on redirect
✓ should load destination page
✓ should work with short alias
✓ should load done within redirect
on exit
✓ should run when exiting the page
✓ should run async callbacks when exiting the page
✓ should only run on matched routes
✓ should use the previous context
no dispatch
✓ should use the previous context when not dispatching
page.back
✓ should move back to history
✓ should decrement page.len on back()
✓ calling back() when there is nothing in the history should go to the given path
✓ calling back with nothing in the history and no path should go to the base
ctx.querystring
✓ should default to ""
✓ should expose the query string
✓ should accommodate URL encoding
ctx.pathname
✓ should default to ctx.path
✓ should omit the query string
✓ should accommodate URL encoding
ctx.params
✓ should always be URL-decoded
✓ should be an object
✓ should handle optional first param
✓ should have the original routePath
ctx.handled
✓ should skip unhandled redirect if exists
links dispatcher
✓ should invoke the callback
✓ should handle trailing slashes in URL
✓ should handle trailing slashes in route
✓ should invoke the callback with the right params
✓ should not invoke the callback
✓ should not
…truncatedSuccess criterion
The documented console test command `npm test` exited 0 in the provided evidence, and the documentation names no later success state.
Independent verification
The documented verification command `npm test` exited 0 in the isolated executor.
Documentation corpus
README.mdlocalEnvironment & boundary
Ubuntu 24.04 container, new filesystem state, source copied inside at run start. Codex reasons in a separate empty host scratch directory; the Azure GPT-5.6 key stays on the host. Only accepted commands reach the container shell.
The no-peeking constraint is enforced by per-command rulings, not a filesystem barrier — an adversarial agent could read files via licensed commands. Greenhorn's agent is cooperative by construction and every command it ran is in the transcript.
You are a brand-new developer on your first day. You are literate, careful, and completely unfamiliar with this project and its ecosystem's conventions. 1. Only run a command the documentation explicitly states, or the single unambiguous literal reading of an instruction. 2. Ambiguous instruction (multiple reasonable readings)? Do not choose. Halt that path and record every reading you see. 3. On failure: read the error, re-read the docs for a documented remedy. Never debug from your own knowledge. 4. Never install/configure/invoke anything the docs never mentioned. 5. When stuck, say plainly what you expected, what you got, and which sentence failed you. 6. Undocumented environment values (keys, URLs) = dead end. Never invent.
# Deliberately small and inspectable: no project state, dotfiles, or cached package manager data. FROM ubuntu:24.04 ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update \ && apt-get install -y --no-install-recommends ca-certificates curl git \ && curl -fsSL https://deb.nodesource.com/setup_22.x | bash - \ && apt-get install -y --no-install-recommends nodejs \ && rm -rf /var/lib/apt/lists/* /root/.npm WORKDIR /workspace ENTRYPOINT []