Skip to content

feat(game): turn the repository into Cover Story#63

Draft
TimBeyer wants to merge 4 commits into
masterfrom
agent/cover-story-prototype
Draft

feat(game): turn the repository into Cover Story#63
TimBeyer wants to merge 4 commits into
masterfrom
agent/cover-story-prototype

Conversation

@TimBeyer

Copy link
Copy Markdown
Owner

What changed

  • turns the repository into Cover Story, a playable browser stealth prototype
  • imports dancing-links@4.3.9 from npm instead of using the former in-tree implementation
  • rebuilds a live exact-cover patrol problem every planning beat
  • renders weighted next-move probabilities from up to 128 sampled joint schedules
  • adds continuous movement, exhibit cover, vision and exposure, echoes, jammed gates, patrol duties, dossier extraction, three identities, scoring, and procedural audio
  • replaces library/release/benchmark automation with focused app build, lint, format, commit, and behavior-test CI
  • removes the old solver source and benchmark tree from this intentionally converted branch

Why

The goal is to test whether solver speed can become the mechanic rather than a visualization of a solved puzzle. Each guard route is a row. Guard selection and active duties are primary columns; node/time and edge/time collisions are secondary columns. Echoes add mandatory duties and gate jams remove route rows, so player actions reshape the valid future space directly.

Every beat is rebuilt from varied live state. The game does not cache answers to repeated puzzles or otherwise manufacture benchmark-friendly work.

Performance and behavior notes

  • sparse, prevalidated route rows are ingested in one batch
  • numeric node, edge, and slot indices avoid dense matrices and parsing in the planning path
  • the horizon, route count, and solution sample are bounded for predictable real-time latency
  • the UI says 128+ when sampling reaches the cap instead of claiming an exhaustive count
  • impossible player echoes fizzle and refund; contradictory routine duties use a separately reported fallback
  • all optimized paths are documented inline with what they do and why they are faster

Browser playtesting observed 128+ futures from roughly 300–420 candidate rows in about 1–2 ms on the local machine. Those figures are telemetry from varied live game states, not a benchmark claim.

Validation

  • npm ci --ignore-scripts
  • npm test — 7 passing
  • npm run lint
  • npm run format:check
  • npm run build
  • npx commitlint --from origin/master --to HEAD --verbose
  • npm audit --omit=dev — 0 production vulnerabilities
  • browser-tested title/start, live patrol rendering, pause/resume, failure/restart, and an echo that visibly redirected a guard

TimBeyer added 4 commits July 14, 2026 01:36
Turn the package into a private Vite prototype that consumes dancing-links 4.3.9 from npm instead of reaching into the repository implementation.

Model one route per guard and every active duty as primary columns, with node/time and edge/time reservations as secondary columns. Feed prevalidated sparse rows in one batch because that avoids dense zero-filled matrices and repeated ingestion calls on every planning beat.

Bound future sampling for stable frame-time, expose capped counts honestly, and recover from impossible inputs by dropping and reporting player duties before routine duties. Cover route selection, collision prevention, jams, contradictions, both non-identical fallback paths, and capped-search reporting with tests.
Add a complete browser mission with continuous movement, exhibit cover, weighted future paths, guard vision, patrol duties, throwable echoes, route-jamming gates, dossier extraction, escalating tempo, lives, scoring, and procedural audio.

Make solver output the interaction itself: ghost paths aggregate the sampled cover space, actual guards follow one complete cover, echoes add mandatory duty columns, and jams remove candidate route rows. Browser playtesting verified start, pause/resume, failure/restart, and a diversion that visibly pulled a guard onto the selected node.

Cache immutable node and edge indexes once because rendering, collision checks, and patrol interpolation query them every frame; this avoids repeating unchanged graph scans without caching or reusing solved states.
Remove the in-tree solver, solver benchmarks, package release automation, and legacy library documentation now that the prototype intentionally consumes dancing-links from npm.

Replace library CI with focused app build, lint, format, and behavior-test jobs across supported Node releases while retaining Conventional Commit validation.

Document the controls, exact-cover column model, honest 128+ sampling label, sparse batch ingestion, numeric hot-path indices, contradiction fallbacks, and the fact that every planning beat is rebuilt from varied live state rather than cached repeated work.
Reset the caught-screen flash when a new infiltration begins so restarting from a failed run opens on the normal museum palette instead of briefly carrying failure feedback into the new state.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant