| Item | Value |
|---|---|
| Previous prototype pin | dde078f5f60d5431172c01f1d295334e2c7ef0f4 |
| New pin | 4d478e0b37196a545c516570b3198aa4b6cfdd14 |
| Upstream ref inspected | Fetched origin/master in the local Bondage-College clone |
| Upstream head timestamp | 2026-10-21T16:28:49-04:00 |
| GameVersion | R133 at both revisions |
| Commit range | 142 commits, including 108 non-merge commits |
| Changed paths | 440: 287 Assets, 84 Screens, 46 Scripts, 23 other |
| Diff size | 3,972 insertions, 1,581 deletions; includes binary asset changes |
This updates the source pin, not the deployed BC server. The upstream clone’s working tree is not modified: generators read the selected Git blobs. The previous R133Beta2-to-R133 review is historical; this review starts at the bot’s actual most recent pin.
The complete upstream comparison contains all changed paths and patches. Reproduce the full commit/path inventories locally, including merge commits:
git -C ~/repo/Bondage-College log --format=fuller \
dde078f5f60d5431172c01f1d295334e2c7ef0f4..4d478e0b37196a545c516570b3198aa4b6cfdd14
git -C ~/repo/Bondage-College diff --name-status \
dde078f5f60d5431172c01f1d295334e2c7ef0f4 \
4d478e0b37196a545c516570b3198aa4b6cfdd14
Messages.d.ts reuses AssetCategory in ServerChatRoomBlockCategory and
corrects room-search BlockCategory to ServerChatRoomBlockCategory[].
Character dictionary example formatting also changes.MessagesPatch.d.ts is unchanged.Typedef.d.ts expands ChatRoomMapObjectConfig from signs to signs or
teleporters. The new config has optional destination, color, and shared-tile
fields. Map objects can supply DefaultObjectConfig and a browser color hook.OnlineID is
removed; ChatRoomGame/ChatRoomSpace globals are removed in favor of room data.
Their wire fields and MemberNumber identities remain.Bot: regenerate declarations and preserve exact category/color/config types
instead of weakening the new map union to unknown or arbitrary category strings.
The event maps remain 26 outgoing and 30 incoming events. No acknowledgement,
request correlation, rate limit, or action-status changes are warranted.
TeleportPad (3530), WoodClosedAuto (4016),
WoodClosedAutoUp (4017), WoodClosedAutoDown (4018),
BrownDoorAuto (4038), SteelDoorAuto (4039), GrayDoorAuto (4040).Bot: regenerate the catalog (170 tiles, 287 objects) and include serializable default object config, never executable callbacks. Extend the shared persisted map validator to accept strict teleporter config. Preserve it through live-save, metadata edit, revisions, backups/restores, config copying, missing-room creation, and unrelated guarded door writes. Existing keys, fields, and sign limits remain.
Optional pad fields stay optional. Accept integer destinations 0-39 and the pinned upstream hex validator’s accepted forms, including its seven-digit form. Reject malformed configuration instead of dropping it or sanitizing to defaults. Diagnostics expose only known field names and canonical cell indices.
The offline analyzer recognizes automatic doors as existing WallPath
thresholds and accepts the pad’s catalog ID as an ordinary non-boundary object.
It still does not interpret cell metadata, model teleport links in its exterior
route graph, or claim directional/access-aware reachability.
Not added: headless browser callbacks, automatic pad pairing, automatic teleport-on-entry, pathfinding, pad editing commands, or optimistic movement evidence. Stored configuration is not a live BC observation.
The regenerated catalog has 85 groups and 2,641 assets, seven more than the previous pin:
Decals/DisciplineCorner, Decals/TheOddRoom, Decals/SADollhouse,
Decals/MansionValentineItemHead/PantiesMask, ItemHood/PantiesMaskItemDevices/BarStoolOther catalog changes include:
d0 and d1 option ordering changes in both torso groups:
d0 now contains the genital blocking properties and d1 does not..join.
Runtime-dependent expressions remain unresolved rather than evaluated.Bot: retain the dynamic module’s raw getter and explicit diagnostics, expose no enumerated options for that unresolved module, and keep mutation rejected by the codec. Malformed/missing/empty static option arrays still fail generation. The catalog records 205 unsupported-source diagnostics, not 205 runtime failures. No lock types or custom callbacks are newly authorized.
Operator review: itemsets with explicit catalogRevision must be reviewed
before repinning. Check unpinned itemsets using TentacleSuit selectors and changed
color layouts too. This update neither inspects nor rewrites database itemsets.
Upstream fixes preserve crafted layer settings, handle mixed numeric/object
modular priority overrides, retain merged drawing offsets, and correctly report
sanitized missing item properties. Inventory changes include default push
arguments, InventoryIsWorn("None"), key recognition, and retaining worn items
during random extension. Text items truncate at their own configured limits;
pet-suit trigger reset, shock handlers, and several item controls are corrected.
Bot: source-driven metadata is refreshed, but browser inventory/drawing functions are not imported. The headless codec sends selectors rather than browser-derived drawing overrides and retains its existing permission, prerequisite, lock, and unresolved-definition guards. Existing appearance regressions must remain green; browser item fixes are not proof of headless support for those items.
Bot: no browser DOM or speech engine is imported. Do not introduce silent trimming or emulate player hearing. Private command replies remain whispers, but a deafened browser recipient may no longer read them normally; dispatch still does not establish delivery. Room snapshots remain server-driven, with existing adapter validation and no success-shaped sanitization fallbacks.
The remaining changes include JSDoc lint adoption/fixes, deprecated API
replacement, the inclusive CommonRange correction, CommonCycle/module cycling
helpers, viewport behavior, upstream test coverage, Node asset/CSV/check tooling,
HTML loading updates, package/lockfile changes, and CI fixes.
Bot: these upstream browser/build dependencies are not copied into the bot. No new runtime dependencies or services are needed. Static appearance extraction does not execute the changed helpers.
Automated coverage includes strict valid/invalid mixed cell configs, exact round-trips through revisions/backups and the actual fake-socket creation packet, defensive observed snapshots, preservation in guarded door updates without optimistic snapshots, automatic-door catalog/analysis behavior, and unresolved BarStool mutation rejection. Existing appearance, transport, journal, isolation, and lifecycle suites remain required.
Completed for this update against the merged region-geometry implementation: lint, repository formatting, type-check, all 579 tests, and the production build with generated API documentation passed. Regenerating all four generated BC files a second time produced identical SHA-256 hashes.
Regeneration must be deterministic at the selected pin. Run:
BC_REPO=~/repo/Bondage-College npm run sync:bc
npm run lint
npm run format:check
npm run check
npm test
npm run build
No live BC login, deployment, MongoDB read/write, or source-database copy is part of this sync. It does not run the upstream browser test suite. Qualify the actual server/client build separately, especially mixed sign/pad save/restore, missing room creation, unrelated door updates, reconnect, and native pad behavior.
No migration is necessary for existing sign-only maps. Older sign-only bot validators reject maps with teleporters: suspend map administration/recreation before rollback and retain the full backed-up documents. Never strip unknown configs to make a rollback appear successful.
Regenerate region candidate manifests after this catalog repin. The reviewed region importer compares catalog revisions as well as map fingerprints, so a manifest exported under the old catalog must not be relabeled to bypass its provenance check.