Vortex Dev Sim Log #8&9 - Alpha Stabilization (Bug Fixes) + Proposal Sync, Transition Snapshots, and Stability Release

Vortex Dev Sim Log #8&9 - Alpha Stabilization (Bug Fixes) + Proposal Sync, Transition Snapshots, and Stability Release

Dev Log #8 — Alpha Stabilization (Bug Fixes)

TL;DR

This stabilization wave focused on live-production correctness: chamber metrics, chamber voting transitions, submission eligibility, formation-to-vote lifecycle consistency, and governor/tier status reliability under real user activity.

What shipped

1) Chambers metrics correctness (ACM + stage surfaces)

  • Fixed ACM aggregation so governors are counted once globally (ACM is absolute per governor), rather than being double-counted across multiple chamber memberships.
  • Added and aligned explicit passed proposal stage rendering for non-formation proposals.
  • Removed formation-stage UI artifacts from proposal types that do not use formation.

2) Proposal submission eligibility (specialization chambers)

  • Proposal submission is now allowed to any chamber for any eligible proposer (submission no longer requires chamber membership).
  • Voting remains chamber-scoped: only the chamber’s eligible governors can vote in that chamber.

3) Chamber vote quorum and auto-advancement correctness

  • Fixed chamber quorum calculation so proposals at 2/4 engagement correctly satisfy a 33% quorum and can advance when passing is met.
  • Removed misleading UI copy suggesting an extra +1 on quorum participation.
  • Added tick-time vote-stage re-evaluation so already-voted proposals don’t stay stuck after quorum-rule updates.
  • Corrected chamber passing math so 2/3 yes (67%) passes a 66.6% passing threshold.

4) Formation milestone lifecycle hardening

  • Milestone submit reliably returns proposals into chamber voting context for continuation/release decisions.
  • Final milestone acceptance transitions projects out of active formation flow as expected.
  • Formation and chamber surfaces now stay aligned around milestone vote state transitions.

5) Governor/tier status reliability under live load

  • Fixed regressions where valid governors were shown as inactive or downgraded to Nominee during formation milestone voting.
  • Added canonical/non-canonical address matching in tier/governance/human projections.
  • Added bootstrap fallback for era 0/1 from chamber membership so active governor status is not incorrectly dropped before full rollup history.
  • Fixed accepted-proposal counting for formation authors while proposals are in vote-stage milestone cycles.

Dev Log #9 — Proposal Sync, Transition Snapshots, and Stability Release

TL;DR

Proposal pages now auto-follow canonical server stage transitions without manual refresh. We also added transition snapshots so each stage change keeps frozen historical context (quorum, vote, and transition reason) even after the proposal moves forward.

What shipped

1) Canonical proposal status endpoint

  • Added GET /api/proposals/:id/status.
  • Server response now owns canonical routing and stage truth for proposal detail pages.
  • Returned fields include:
  1. canonicalStage
  2. canonicalRoute
  3. redirectReason
  4. formation milestone context when applicable.

2) Auto-transition on proposal pages

  • Proposal detail pages now poll canonical status and auto-navigate when stage route changes.
  • Route sync is shared across:
  1. proposal pool
  2. chamber vote
  3. formation
  4. finished
  • Polling pauses in hidden tabs.
  • Route mismatch guard prevents redirect loops.

3) Transition notice banner

  • Added contextual transition notices after auto-redirect.
  • Users now get explicit messaging when a proposal moves between stages.

4) Transition snapshots in proposal history

  • Added frozen transition snapshots to proposal timeline events.
  • Snapshots preserve:
  1. source/target stage
  2. transition reason
  3. milestone index (when relevant)
  4. frozen metric rows.
  • Timeline UI renders these snapshots directly under transition events.

5) Proposal creation identity cleanup

  • Removed hardcoded proposer placeholders from proposal creation review.
  • Review now always shows the connected proposer wallet.
  • Address copy/open-profile behavior remains consistent with other UI surfaces.

6) Legacy placeholder and wording cleanup

  • Removed stale demo-style wording from user-facing screens.
  • Replaced user-facing fallback placeholders with explicit text.
  • Replaced legacy example wallet placeholders with Humanode-style examples.
  • Completed an additional sweep to remove remaining hardcoded identity/demo placeholders from active surfaces.

7) Proposal/chamber UX fixes

  • Fixed finished proposal stage rendering so completed proposals show correctly on passed surfaces.
  • Fixed post-action stage sync after formation actions (join/submit/finish).
  • Fixed feed deep-links for chamber threads (?thread=<id> preserved and auto-opened).
  • Normalized proposal unavailable messages by stripping raw HTTP prefix noise.
  • Fixed chamber pipeline filter behavior for formation-stage proposals.

8) Courts/drafts/navigation fixes

  • Improved courts list date sorting robustness.
  • Aligned courts opened DTO typing between API and web.
  • Replaced draft submit full-page reload with SPA navigation.
  • Normalized draft load error text for user readability.
  • Fixed ended formation outcome routing to /finished when project reached terminal state.

9) Urgent feed completeness

  • Urgent feed now composes dedicated actionable streams for:
  1. proposal pool
  2. chamber vote
  3. own formation actions
  4. faction invitations.
  • This removed dropped-card cases caused by mixed feed pagination and dedup ordering.

10) Formation terminal routing hardening

  • Final milestone acceptance now resolves to terminal finished route.
  • Rejected/canceled milestone outcomes also resolve to terminal finished route.
  • Terminal milestone events are now non-actionable.
  • Finalization text and feed semantics are consistent for completed project outcomes.

11) Faction reliability and moderation consistency

  • Reply create/delete now bumps thread updatedAt reliably for ordering.
  • Thread moderation permissions are aligned for founder and steward roles.
  • Added regression coverage for timestamp bump and steward transition permissions.

12) Server error normalization

  • Standardized unhandled API failures to stable user-safe payloads:
  1. status 500
  2. message Request failed
  3. code internal_error
  • Added normalized faction-specific internal failure codes for list/detail failures.

Why this matters

  • Users now see stage transitions live while staying on the proposal page.
  • Server remains the single source of truth for proposal route/state reconciliation.
  • Historical stage context remains auditable after transitions.
  • The release removes a large set of user-facing rough edges across proposals, formation, feed, factions, and error handling.