Commit Graph
1303 Commits
Author SHA1 Message Date
jason.woltje b6e52e1b52 docs: roles design round 2 review fixes (#1873) 2026-11-10 15:26:24 -06:00
jason.woltje 3bcdee0926 docs: roles design round 2, rails layers and autonomy levels (#1873) 2026-11-10 15:26:24 -06:00
jason.woltje d630f815c2 fix(webui): P2 review fixes for system types (#1873)
Recheck the session after the read so a sign-out dispatches no write.
Take the enabled set and its revision from one plugins read. Let the
owner clear an inactive-only selection when nothing is enabled. Keep
role tools as the hard ceiling in the toolset design, name only
vocabulary tools in the mapping, and intersect mission and task over
the final set.
2026-11-10 21:11:14 +00:00
jason.woltje 14f1b3b2b1 feat(webui): P2 system types on the org dashboard and project page, toolset design (#1873)
The org dashboard lists the installed system-type modules with their own
labels and descriptions, marks which are enabled, and gives the owner an
enable or disable control through plugins.set behind the owner fence, with
the revision and the transaction receipt. The project page selects from the
organization's enabled set through project.system-types.set and shows a
disabled selection as inactive, as system-types.console reports. Both routes
go through the per-org Console call path and its admission checks.

docs/plans/2026-11-10_system-type-toolsets-design.md proposes how a launch
turns a project's active system types into toolsets under the role, mission
and task ceilings. Design only; no roles/ or contract change is applied.
2026-11-10 21:11:14 +00:00
jason.woltje f98f278fbb docs: roles design review fixes (#1873)
Route merge, policy, hire, fire and credential decisions to the human and
keep merge and policy cross-role only. A person-started hire is a decision
record. Restructure the usability table by who acts, list template roles
explicitly, add the arbiter threat row and slice tests.
2026-11-10 15:00:43 -06:00
jason.woltje c6e341e92e docs: roles, rails and hire as a decision design (#1873)
Roles become templates plus organization copies built from known parts. A hire is a decision the chief raises and a human with org.hire approves. Rails listed with their enforcement points. Proposal only: no change to AGENTS.md, roles/, contracts/ or code.
2026-11-10 14:50:04 -06:00
jason.woltje af7d330101 docs: clarify host trust boundary 2026-11-10 19:57:49 +00:00
jason.woltje db75994f82 docs: define accounts host trust boundary 2026-11-10 19:57:49 +00:00
jason.woltje d247b4eb61 fix(agents): A1 review fixes for scope, opt-outs and refusal text (#1873)
Two independent reviews (Sol, daybreak-blue) asked for changes.

- An organization's own assistant instance is scoped to that
  organization. Only the root assistant, which no union holds, is
  cross-organization.
- A root opt-out or project exclude whose name a more specific level
  defines is no longer listed as unavailable.
- A malformed root agents.json refuses with "not valid JSON" only; the
  parser's text, which can quote the file's bytes, is dropped.
- A refused root or project var names its key, never its value; an id
  check's quote of a root value is dropped too. A value can be a secret
  typed in the wrong place, and these refusals reach the Console.
- The root assistant's row shows the model the root file sets.

Tests cover each case, with a sentinel value checked absent from the
route body. The design doc records the behavior.
2026-11-10 13:29:11 -06:00
jason.woltje e358886826 feat(agents): A1 agent levels, a read-only union and the Agents grid (#1873)
Phase A slice A1, no authority change. Agents are defined at three levels:
the user's root (<configDir>/agents.json), the organization (roles) and the
project (projects.<p>.agents in the organization file). A project's agents
are their union, the most specific level winning.

- organization: agent-levels.mjs loads and checks the root file (no link,
  owner uid, no group or other write) and project entries (define, narrow
  intersect keys only, exclude), and resolves the union. The organization
  file checks project agents for every reader and leaves them out of the
  loaded business, so buses see what they saw before. Old-path re-export
  in packages/business.
- webui: GET /api/agents/levels, owner only, with no host path, credential
  reference or var other than the model in its body. display.js leaves it
  unscoped. SERVER_PROJECT_KEYS holds agents.
- Agents grid: the level band, a project picker, and per agent its level,
  the file that defines it, memory, status and model, with narrowed keys,
  overrides and what the project does not get.
- Design: docs/plans/2026-11-10_agent-levels-design.md. The roles/ change is
  a proposal outside this branch.
2026-11-10 13:29:11 -06:00
jason.woltje 01b79e1db4 docs(plans): accounts design draft 3, threat row count (#1873) 2026-11-10 13:03:07 -06:00
jason.woltje 0a75cc82f3 docs(plans): accounts design draft 3, luna review fixes (#1873)
Member task writes use the person verbs tasks.* instead of the agent task
path. A member's console cap never carries the org's human, and only the
decide handlers and request reads gain a member branch. VERB_RIGHTS pins
every BOARD_VERBS entry. request.write is reserved, decide excludes
credential mints, and the lead-confirm list becomes decided choices.
2026-11-10 13:02:37 -06:00
jason.woltje c66cd58846 docs(plans): accounts design draft 3, rights-based membership (#1873)
Applies Jason's three rulings of 2026-11-10. Named rights, role bundles
and per-member grants replace the fixed owner and member split. A member
holds org.view, thread.read and board.read by default. decide and
task.write are grantable. The rights table lands first as slice M1.
2026-11-10 12:46:18 -06:00
jason.woltje 69af2fe94b docs(plans): accounts design draft 2, review fix round (#1873)
Applies the luna review (3 changes) and the sol review (10 changes):
per-role transport table with member reads limited to threads, ownsOrg
over every subject of the owning account, memberGrant adapter, verified
snapshot read after the check, authGen session invalidation, one lock
order, random org incarnation, explicit invite callback exception, a
build stamp that refuses the dev owner in stamped copies, and a rollback
that keeps OIDC. Member board reads and task writes move to slice M8
behind an owner ruling.
2026-11-10 12:32:06 -06:00
jason.woltje 4106bf7344 docs(plans): accounts, membership and invites design, Phase M (#1873) 2026-11-10 12:13:32 -06:00
jason.woltje 03fe321b12 docs(prd): land version 1.20, the unified workspace (#1873)
Jason approved draft 2 on 2026-11-09 at 22:57Z: "The file looks fine
other than that." The exception is the Montage module name, deferred
since 19:26Z. Amends REQ-ASSIST-1, REQ-USER-1, REQ-TASK-1 and REQ-WEB-3
and adds 17 requirements (101 to 118): REQ-WS-1..8, REQ-AGENT-1..3,
REQ-SYS-1..2, REQ-ACCT-1..2, REQ-SETUP-1..2. requirements.json and the
tasks and bus count pins follow.

Tests: 68 pass, 1 fail. The failure is stack-copy.test.mjs (20/1), which
fails the same way on origin/refactor 483eccb3d: npm's pinned install
can't find node-gyp/bin/node-gyp.js in the test Node installation.
2026-11-09 17:04:31 -06:00
jason.woltje 2bed0aebeb Merge refactor bad760ce0 into U0 samples 2026-11-09 13:26:39 -06:00
jason.woltje af674e14c1 docs(design): keep the WebUI four-tile logo in the U0 samples; record U0 approval (#1873)
Jason approved the U0 screens on 11-09 with one change: keep the temporary
logo the site already uses. The samples drew the design system's Relay
placeholder; they now draw the WebUI's four-tile mark with the same fills
as processing.css. The direction doc records the approval verbatim, the
deferred Montage name, and the open-question defaults phase U takes.
2026-11-09 13:26:39 -06:00
jason.woltje edec4e1d04 docs: PRD 1.20 draft 2, chief of staff hires at every level (#1873) 2026-11-09 12:14:00 -06:00
jason.woltje 00ef0bd301 docs: record unified workspace direction and PRD 1.20 draft (#1873) 2026-11-09 11:55:44 -06:00
jason.woltje 3c2d8631e5 docs: record owner rulings for organizations 2026-11-09 11:55:31 -06:00
jason.woltje 3572bf9b32 docs: diagnose MVP 3 WebUI channel failure (#1843) 2026-11-04 16:39:00 -06:00
jason.woltje 138171ca0d docs: record lifecycle Task 1 review, fix round and landing decision (#797) 2026-11-03 18:21:15 -06:00
jason.woltje 831d15f0b4 docs: prepare lifecycle execution and original request evidence (#1839) 2026-11-03 17:01:26 -06:00
jason.woltje 63bd48a5f8 docs: specify working repository bootstrap interface (#797) 2026-11-03 16:59:51 -06:00
jason.woltje 260f2ce7ed docs: plan request lifecycle implementation and PRD addendum (#797) 2026-11-03 16:59:51 -06:00
jason.woltje a34f79692e docs: record user terminology migration inventory (#1840) 2026-11-03 16:52:09 -06:00
jason.woltje 7e849a7b0b docs: plan GPT implementation of Console decision answers (#1839) 2026-11-03 16:37:00 -06:00
jason.woltje ec5354bcc2 docs: propose request-to-product intake and decision flow (#1839) 2026-11-03 16:32:20 -06:00
jason.woltje fddae79ef6 queue: commit pending rev 4144 (sage, 2026-10-26, row 333 note Mos1961), committed by lead c5c1e8ba 2026-11-02 15:07:37 -06:00
jason.woltje aba5cc505f lead: commit 34 untracked publication-trial review records under docs/plans/reviews as evidence
Unclaimed files left in the canonical checkout. Inventory: canonical-cleanup-inventory.md (commit-as-evidence groups). detect-secrets scan clean on 2026-11-02: hits are sha256 pins, git object ids, test sentinels already in tracked tests and unit-file lines.
2026-11-02 15:05:15 -06:00
jason.woltje 09a847edaa queue: cite real postlanding reviews and retain tracking-only open rows (Mos1915) 2026-10-26 13:05:08 -05:00
jason.woltje 362893d043 feat: integrate reviewed proxy page and managed model keys
Source-candidate: poe d9a564e6d20f5f0fd75ce45b12cbbf8bb4c9d568\nSource-candidate: magica38ba5762b06716db1dee00d0afec162656488f5c\nValidated321whole-file phase plus whole bus1349/model-proxy100/webui490; final gate tooling checks pending, not landed.
2026-10-26 12:04:21 -05:00
jason.woltje acd2f4abfa queue: record row288 landed after quiet fullgate4 (Mos1864) 2026-10-26 11:10:57 -05:00
jason.woltje e1d8756b51 docs: PRD 1.18 brief, REQ-INST-2 prints the providers entry (mos-1671, sage-4418) 2026-10-25 00:02:21 -05:00
jason.woltje ce8bb4d8b0 queue: revs 4073-4095. Briefs and starts: 331/334 briefed (4073-4075), starts magica 331 (4076), poe 330 (4077), rockerduck 334 (4079), bubba 288 (4080), morgana 267 (4087), launchpad 255 (4092); briefs 267 (4085), 255 (4086). Row 193: morgana in-review 4078, Sage abandon 4081, request 4082, resolve to c31674 4084, Duckworth approve c31676 4088 (posted and recorded by Sage, no Duckworth credential). Row 214: herb in-review 4083, Sage abandon 4089, request c31678 4090-4091, Filbert approve c31679 4093 (Filbert's). Row 214 landed 3a8e4abad: note 4094, done 4095. 2026-10-24 23:34:28 -05:00
jason.woltje 78b69e1e68 docs: Vikunja 633 (P7 proxy startup refreshes) and 634 (row 284 N1) per mos-1647. DEFERRED entries, BUILD-LOG line, filing receipt. 2026-10-24 19:18:35 -05:00
jason.woltje 48b89db33b docs: row 284 landed ce0b6ed41 (#1789). BUILD-LOG and SESSIONS lines, DEFERRED Webby N1 (library read path). 2026-10-24 19:15:48 -05:00
jason.woltje 7c8dc20335 queue: revs 4065-4072. Row 284 round 2: Della reopen 4065, in-review 4066, request outcome 4067 (Della's); Sage request posted c31653 (4068-4069); Webby approve c31654 (4070, Webby's). Row 284 landed ce0b6ed41: note 4071, done 4072. 2026-10-24 19:15:41 -05:00
jason.woltje 9e2689dffb docs: row 329 landed 61ebf2c34 (#1827). BUILD-LOG and SESSIONS lines, DEFERRED N2/R2-N1 (row 331) and N1 (P7), Vikunja 631 filing and 237 comment receipts. 2026-10-24 18:37:46 -05:00
jason.woltje b24d917ec9 queue: revs 4062-4064. Row 284 round 1 approve by Webby, comment 31645 (rev 4062, Webby's). Row 329 landed 61ebf2c34: note 4063, done 4064. 2026-10-24 18:37:13 -05:00
jason.woltje 669cdf42c4 queue: revs 4021-4061. Row 329 r1/r2 (Magica 4025-4026, 4031-4033; Boyd 4029, 4048; Dewey 4030, 4047; Sage 4021-4024, 4027-4028, 4037, 4040-4042). Row 284 (Della 4038, 4052-4053; Sage reviewers 4055, request 4060-4061 comment 31644). Re-pins 284/288/289/214/227/267/229/223 (4034-4036, 4039, 4043-4046). Row 209 brief 4049, row 229 blocked 4050. Row 332 note/assign/after (4051, 4054, 4057), Fethry start 4059. Row 333 reviewers 4056. Row 334 added for #1832 (4058).
Includes other seats' revs: Magica 4025-4026, 4031-4033; Boyd 4029, 4048; Dewey 4030, 4047; Della 4038, 4052-4053; Fethry 4059 (mos-1634 item 5).
2026-10-24 18:22:57 -05:00
jason.woltje c8a9bcf946 docs: P3 amendment for pi's GLM and GPT routes, and the Case 2 proxy unit brief (mos-1616) 2026-10-24 17:13:28 -05:00
jason.woltje 58b2bbb3a5 docs: row 209 brief as the .54 window with its own proxy (mos-1615, Q253) 2026-10-24 17:04:07 -05:00
jason.woltje 95d4991d20 docs: brief template run lists come from imports (mos-1612)
A builder's whole-file run list for a row comes from imports, not a text
grep, and goes in the builder's report before the run. Files on the
mos-1592 list stay off unless Mos approved the run. Row 329 round 2's
path grep matched fixture text and reran case1-accept.
2026-10-24 16:39:32 -05:00
jason.woltje 966ee31ea8 docs: row 330 P4 brief and design D7/J4 for mos-1608
Mos approved the P4 brief with upstream API keys added: a human-only write-only verb, z.ai-only allowlist, apikey-invalid and provider-not-allowed refusals, a canary test and an echo mutant. Account ids hash the proxy's own credential identifier, never a token or key value. Account removal stays out of P4.
2026-10-24 15:54:18 -05:00
jason.woltje 696ea3a3af docs: row 330 P4 brief as the Console proxy page; Q250 amendments to the Vikunja 237 design
Jason's Q46 and Q47 (DECISIONS Q250, mos-1606): accounts are entered in the Console's own proxy page and D8's /proxy/ forward to the upstream panel is dropped. The new P4 brief is its own file so the rows doc blob that rows 329 and 331-333 pin stays unchanged. Design D5-D8, D10, D20, migration step 4, J3-J5, the rows table and the Mos rulings list are amended.
2026-10-24 15:49:37 -05:00
jason.woltje 0ce22dde65 queue: revs 3946-4020. Row 290 (Louie 3947, 3950-3951; Sage request 3952-3953; Webby approve 3954; note and done 3956-3957). Row 225 (Fethry 3946, 3958-3959; Dewey approve 3960; request 3961-3962; note and done 3969-3970). Row 287 (Sage assign and set 3948-3949; Steelbeak 3955, 3963-3964; request 3965-3966; Boyd 3967 and Dewey 3968 approve; note and done 3971-3972). Row 266 (Sage 3973-3977; Fethry 3978-3980; request 3981-3982; Boyd 3983 and Dewey 3985 approve; note and done 3988-3989). Row 227 assign 3984. Row 257 note and done 3986-3987. Row 328 (add 3990, brief 3991; Fethry 3992, 3997-3998; request 4000-4001; Boyd 4002 and Dewey 4003 approve; note and done 4019-4020). Row 224 (Della 3993-3994; request 3995-3996; Dewey approve 3999; note and done 4015-4016). Model-proxy rows 329-333 add and brief (4004-4013), Magica 329 start 4014, 330 blocked 4017 (mos-1602), 331 note 4018. 2026-10-24 14:52:57 -05:00
jason.woltje 7fe32d7226 docs: briefs for the model proxy rows P1 to P5 (Vikunja 237, mos-1600): P1 package, pinned fetch with sha256 refusal, mosaic proxy init writing proxy.json once beside config.json (invariant 2) and the key through the human transport, unit; P4 Console /proxy/ forward, owner-only, in a CSP sandbox with a stop condition; P2 per-agent keys, reconcile, preflight; P3 harness env; P5 usage plug-in, per-key count only; doc only 2026-10-24 14:04:26 -05:00
jason.woltje 06f507dbc0 docs: BRIEF-TEMPLATE makes TMPDIR with shell mktemp -d only (no Python mkdtemp, one per run) and sets nice absolutely to 19 in each child, recording the nice each run saw (mos-1598, Vikunja 623); reports for Sage go to Sage's thread (mos-1591); doc only 2026-10-24 13:53:26 -05:00