chore: record Task 12 + integration stress results (core complete)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
4e54d3b7ba
commit
3232cf3d09
1 changed files with 12 additions and 0 deletions
|
|
@ -47,6 +47,18 @@ All 5 passes individually PASS (101 tests green, clippy clean). Adversarial veri
|
||||||
### DECISION (user) — door topology = Variant A, door_chance 0.5
|
### DECISION (user) — door topology = Variant A, door_chance 0.5
|
||||||
Backed by 2000-seed experiment (A: 0 orphans, ~50/50 mix; B: 66.5% orphans). DoorPlacer being REVISED to pierce-aware door-at-mouth + DoorConfig{door_chance:0.5 default}. See smell-ledger for the exact model. This is a change to a committed pass (Task 11). Recipe (Task 12) must expose door config + adjust integration expectations (doors exist; edge.at = Some only for doored edges, None for open archways).
|
Backed by 2000-seed experiment (A: 0 orphans, ~50/50 mix; B: 66.5% orphans). DoorPlacer being REVISED to pierce-aware door-at-mouth + DoorConfig{door_chance:0.5 default}. See smell-ledger for the exact model. This is a change to a committed pass (Task 11). Recipe (Task 12) must expose door config + adjust integration expectations (doors exist; edge.at = Some only for doored edges, None for open archways).
|
||||||
|
|
||||||
|
### DoorPlacer revision ✅ (commit 93c32a6)
|
||||||
|
Pierce-aware model: threshold = pierced cell (corridor floor, not in any room) with room-MEMBERSHIP neighbor on one axis + outward-corridor on the opposite. `DoorConfig{door_chance:0.5}` (PartialEq only — f64; no serde, matches Bsp/RoomConfig). `rng.chance` drawn once per threshold (lock-step determinism), BTreeSet dedupe. edge.at: corridor-region i ↔ edge i; Some(door) only if a door borders an endpoint room AND is in that edge's corridor; None when both ends are archways (cosmetic pointer, not connectivity). Non-endpoint pierce doors exist but aren't attributed to edges (documented). 14 door tests, 103 total green, clippy clean. Reviewed code directly: correct.
|
||||||
|
**Task 12 must add `doors: DoorConfig` to DungeonConfig** (not in original task spec — added by door decision) and flood Floor+Door for connectivity; some edges legitimately have at==None (archways).
|
||||||
|
|
||||||
|
### Task 12 — dungeon recipe + integration ✅ (commit 4e54d3b)
|
||||||
|
`dungeon(cfg)->Result<Pipeline,ConfigError>` validates (ZeroDimension/RoomTooSmall/MaxSmallerThanMin/NegativeMargin/RoomLargerThanLeaf) then assembles BSP→Room→MST→Corridor→Door. Validation inequality `min_leaf - 2*margin >= min_size` (matches RoomCarver skip) → no skipped leaves → MST spans all → connected. DungeonConfig{width,height,bsp,rooms,connect,doors} default 64×40, door_chance 0.5, PartialEq-only (f64). 115 tests green incl: determinism, run==run_with_snapshots (5 snapshots, labels ordered), connectivity over 64 seeds (Floor|Door flood), bounds, validation errors, doors-exist + door_chance=0→0 doors but still connected (cosmetic proof) + monotonic mix. Eyeball render = recognizable connected dungeon with doors/openings mix. Reviewed validate() + connectivity test directly: correct.
|
||||||
|
|
||||||
|
### Orchestrator integration stress (throwaway, deleted) ✅
|
||||||
|
~9,200 generations all green: 5000-seed connectivity (0 orphans, default); 500-seed determinism + run==run_with_snapshots; 7 edge configs (8×8 single-room, 16×16, 120×12, 100×80, 0.6 loops, door_chance 0.0/1.0) × 300 seeds = no panic, connected, in-bounds; door_chance monotonic. Core is rock-solid.
|
||||||
|
|
||||||
|
**CORE COMPLETE (Tasks 1–12).** Remaining: Task 13 viz (interactive, can't headless-test — build + boundary review + user runs it).
|
||||||
|
|
||||||
## Phase 3 plan (REVISED — no worktrees)
|
## Phase 3 plan (REVISED — no worktrees)
|
||||||
Run passes 7→8→9→10→11 SEQUENTIALLY in shared tree (forced by no worktree isolation). Each implementer creates its file + appends its own `pub mod`/`pub use` to passes/mod.rs (sequential = no race, like Tasks 2-5 did with lib.rs). No pre-stubbing needed. Sequential also lets later passes (e.g. DoorPlacer) read earlier passes' real cell-population conventions. Then a PARALLEL adversarial verify fan-out (read-only, no isolation) over the 5 passes for algorithm/determinism/bounds bugs. Heavy integration verification deferred to Task 12.
|
Run passes 7→8→9→10→11 SEQUENTIALLY in shared tree (forced by no worktree isolation). Each implementer creates its file + appends its own `pub mod`/`pub use` to passes/mod.rs (sequential = no race, like Tasks 2-5 did with lib.rs). No pre-stubbing needed. Sequential also lets later passes (e.g. DoorPlacer) read earlier passes' real cell-population conventions. Then a PARALLEL adversarial verify fan-out (read-only, no isolation) over the 5 passes for algorithm/determinism/bounds bugs. Heavy integration verification deferred to Task 12.
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue