Skip to content

feat: collection offer books, royalty enforcement, signal edit history, emoji reactions - #194

Merged
Darkvader-ship-it merged 2 commits into
PHASE-STELLAR:mainfrom
KingFRANKHOOD:feat/issues-88-89-100-101
Aug 31, 2026
Merged

feat: collection offer books, royalty enforcement, signal edit history, emoji reactions#194
Darkvader-ship-it merged 2 commits into
PHASE-STELLAR:mainfrom
KingFRANKHOOD:feat/issues-88-89-100-101

Conversation

@KingFRANKHOOD

Copy link
Copy Markdown
Contributor

Summary

Implements four flag-gated features, each an isolated module in an existing *-store.ts wired additively into its API routes. All four flags default off — zero behavioural change on main until explicitly enabled.

Each issue's "Impacted Subsystems" pointed at files that didn't line up with where the feature actually belongs in this codebase (e.g. offers/listings live in lib/market-store.ts behind app/api/market/*, not the signals/replies files listed). Implemented against the domain each feature actually fits, per the title + acceptance criteria — see IMPLEMENTATION_SUMMARY_88_89_100_101.md for the reasoning and full per-issue breakdown.

Also fixes a pre-existing bug blocking all of the above

lib/sqlite-db.ts:getDb() calls serverDataJsonPath("sqliteDb"), but "sqliteDb" was never registered in lib/server-data-paths.ts's FILES map when signals/market were migrated onto SQLite (issue #36) — every getDb() call threw at runtime, i.e. every signal/market read or write. This was masked because a pre-existing, unrelated syntax error in app/api/forge-agent/route.ts aborts tsc's whole-program check before semantic diagnostics run, so npm run typecheck silently reported nothing wrong, and lib/__tests__/signals-social.test.ts / market-profile-views.test.ts were quietly failing on main too. One-line, additive fix (sqliteDb: "phase.sqlite3") — no schema change, no migration.

Test plan

  • npx tsc --noEmit (scoped to exclude the pre-existing forge-agent parse failure): 0 errors in every changed/new file.
  • eslint on every changed/new file: clean.
  • Full suite on Node 22 (node --test --import ./node_modules/tsx/dist/loader.mjs ...): 253 → 269 passing, 0 regressions. Remaining 26 failures are pre-existing/unrelated (see summary doc).
  • New suites, 20 cases across the 4 features:
    node --test --import ./node_modules/tsx/dist/loader.mjs \
      lib/__tests__/collection-offer-book.test.ts \
      lib/__tests__/royalty-split.test.ts \
      lib/__tests__/signal-edit-history.test.ts \
      lib/__tests__/signal-reactions.test.ts
    
  • PROJECT_ARCHITECTURE.md §10 and docs/TECHNICAL.md §5.3/§9.1 updated with the four new flags per CLAUDE.md's change-management rule.

Closes #88
Closes #89
Closes #100
Closes #101

🤖 Generated with Claude Code

KingFRANKHOOD and others added 2 commits August 31, 2026 18:20
…y, emoji reactions (PHASE-STELLAR#88, PHASE-STELLAR#89, PHASE-STELLAR#100, PHASE-STELLAR#101)

Adds four flag-gated features, each an isolated module in an existing
*-store.ts wired additively into its API routes:

- PHASE-STELLAR#88 (phase-139): collection-level offer books aggregated from per-token
  offers, plus bulk-bid across a collection's listings.
- PHASE-STELLAR#89 (phase-140): royalty enforcement on secondary sales — a creator/seller
  split computed and ledgered at offer-accept time.
- PHASE-STELLAR#100 (phase-82): signal edit history with word-level version diffing,
  author-only, non-destructive (pre-edit snapshot on every edit).
- PHASE-STELLAR#101 (phase-83): emoji-reaction aggregation on signals (curated set,
  toggle per wallet) with a per-wallet rate limit.

Also fixes a pre-existing bug blocking all of the above: `sqliteDb` was
never registered in lib/server-data-paths.ts's FILES map when
signals/market were migrated onto SQLite (issue PHASE-STELLAR#36), so every
getDb() call threw. Masked by an unrelated tsc parse failure in
app/api/forge-agent/route.ts that was silently suppressing all
semantic typecheck diagnostics project-wide. One-line, additive fix;
see IMPLEMENTATION_SUMMARY_88_89_100_101.md for the full verification
trail (253 → 269 tests passing, 0 regressions).

All four flags default off; zero behavioural change until enabled.

Closes PHASE-STELLAR#88
Closes PHASE-STELLAR#89
Closes PHASE-STELLAR#100
Closes PHASE-STELLAR#101

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@drips-wave

drips-wave Bot commented Aug 31, 2026

Copy link
Copy Markdown

@KingFRANKHOOD Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@Darkvader-ship-it
Darkvader-ship-it merged commit 99ce55f into PHASE-STELLAR:main Aug 31, 2026
0 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment