Commit Graph
2 Commits
Author SHA1 Message Date
Bendik Aagaard LynghaugandClaude Sonnet 5 8d10e99726 Actor state machines: employee lifecycle, investors, organizations wired, development proposals
Lint and reload / lint-and-reload (push) Successful in 2s
- applicants grows past the one decision: invited -> active (onboarded)
  -> departed, one continuous graph per person.
- investors: open -> in_dialogue -> committed -> divested, with decline
  edges; submission via a new "I want to invest" alternative on /.
- organizations (prospect -> client -> past_client) finally gets pages:
  a review listing with its transitions and a record-a-prospect form.
- development_proposals: the question architecture dogfooding its own
  development - /develop-proposal takes proposals from anyone (human
  today, an LLM later through the same public form), /develop lets an
  owner approve or reject, and approval hands off to the automation
  that opens the PR (see infrastructure's development-commit workflow).
  The repo's own lint CI gates the merge, same as any human commit.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-12 22:04:11 +02:00
Bendik Aagaard LynghaugandClaude Sonnet 5 4efa26585a Add aggregates.yaml: the full state graph for applicants/subscribers/projects/organizations
Lint and reload / lint-and-reload (push) Successful in 2s
Portal's aggregate state machines used to be compiled Rust, duplicated
across four files plus the bucket-name wiring that dispatched to them.
This is now the single source of truth for what states exist, what
event-type string represents each, and what transitions are legal -
portal loads and validates it at boot/reload (see the paired portal
change). Adding a new aggregate, or reshaping an existing one, is now
a content-only change.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-11 21:42:57 +02:00