Skip to content

feat(crew): route by data class from the committed crew.json - #534

Open
kinqsradio wants to merge 2 commits into
mainfrom
feat/crew-class-routing
Open

kinqsradio wants to merge 2 commits into
mainfrom
feat/crew-class-routing

Conversation

@kinqsradio

@kinqsradio kinqsradio commented Nov 12, 2026 •

Copy link
Copy Markdown
Member

Summary

  • Router filters engines by data class: classes in .orbyn/crew.json, read through hardened git at the checkout's HEAD when the task starts (pinned for the task, not read from the checkout's files), strict, and failing closed when invalid
  • A blocked engine is rejected as path_class; an explicit engine tag on a blocked engine is refused, never swapped
  • Each routing writes one route_class ledger row (classes, blocked engines, chosen engine, commit and blob); a refusal keeps the full rejected list
  • Work per brief is bounded (paths and glob tests, matching off the async runtime); over the bound the brief counts as every class
  • Read-only Preview routes: GET /api/crew/classes, /api/crew/classes/test, /api/crew/route/{task}

Known limits: the rules are read at the checkout's HEAD; an agent that can run git can move HEAD to a commit without the file (reading a ref an agent cannot move, such as the default branch, is a later change). A thread with no commit is now refused. Review briefs have no files, so they count as every class.

Refs slice 4i (production-linked target rules), routing by data class (PR A of three: guard is PR B, screens are PR C).

Parity rows

none

Frames built

Frames built: none (routes only; route-class-* and classes-* frames are built in PR C)

Testing

  • CI covers the rest.
  • Run locally: fmt, clippy --workspace --all-targets -D warnings, crew:: (294), store::, orbyn-contracts, orbynd crew routes, check_rust_arch.py
  • Not tested: gate-time and verify-time enforcement (not built); the 50,000-file listing cap (checked by reading only)

Co-authors

none

AI usage

  • Written by hand, with no AI
  • Harness and version: Claude Code 2.1.318
  • Models: claude-sonnet-5-5 (worker, all code and tests)
  • Effort: medium
  • Human role: assigned the task and its boundaries; review pending
  • Sources: none

Checklist

  • Works on Windows and macOS
  • web/src/generated with any contract change; docs/architecture.md with any rule change
  • No copied source, secrets, credentials or personal data; no AI attribution in commits, title or branch

@github-actions github-actions Bot added dependencies Dependency updates area: core crates/orbyn-core: runs, drivers, workspace, approvals, storage area: contracts crates/orbyn-contracts and web/src/generated area: service crates/orbynd: local service and CLI area: docs docs and Markdown files labels Nov 12, 2026
@github-actions

github-actions Bot commented Nov 12, 2026 •

Copy link
Copy Markdown

UI preview

Frames built: 0 drawn from the dev-only mock app (fake data, no account), commit 6f9d1c7. Light first; Dark and Dim are folded. This shows our screens only, not the designs.

Not screens the preview knows: none, (routes, only;, route-class-*, and, classes-*, frames, are, built, in, PR, C) (see web/tools/pr-preview/catalog.mjs).


Every image, as one download: this workflow run.

let ok = |rules: Vec<Value>| parse_file(&file(rules));
let bad = |text: String, words: &str| {
let why = parse_file(&text).expect_err(&text);
assert!(why.contains(words), "{why:?} should mention {words:?}");
let why = parse_file(&file(vec![secret])).unwrap_err();
assert!(
why.contains("secret") || why.contains("key") || why.contains("token"),
"{why}"
why.contains("secret") || why.contains("key") || why.contains("token"),
"{why}"
);
assert!(!why.contains("aaaaaaaa"), "{why}");
@github-actions github-actions Bot added the area: web web: React UI label Nov 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: contracts crates/orbyn-contracts and web/src/generated area: core crates/orbyn-core: runs, drivers, workspace, approvals, storage area: docs docs and Markdown files area: service crates/orbynd: local service and CLI area: web web: React UI dependencies Dependency updates

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants