992 Commits
Author SHA1 Message Date
jason.woltje 7e0d3c93f3 Fix project inspectGit race with git maintenance (Vikunja #780)
Fixture helpers that commit to a repository the product later inspects now pass
maintenance.auto=false and gc.auto=0, as the product's own git calls already do,
so a detached git maintenance run no longer writes pack temp files mid-walk.

inspectGit now refuses a git metadata entry that vanishes between readdir and
lstat (or between listing a directory and reading it) with project-repository,
'git metadata changed during inspection', instead of leaking a raw ENOENT.
It still refuses rather than skipping or retrying. A missing .git keeps its
existing error.

A deterministic test removes the named entry from inside a replaced readdirSync,
for both a file and a directory.
2026-11-02 17:55:40 -06:00
jason.woltje 3692fca522 fix(row333 R3): per-key quota follows the agent's key lineage across rotation and re-issue (#1831)
Ruling 1: model records keep a bounded previous list (64 ids, oldest dropped)
of ids that left by rotation, grace expiry or re-issue; a fire removes the
record. A tokens.keys leaf matches and counts every id in the lineage that
holds it. Lineage ids are unique host-wide. An orphaned leaf limits nothing,
logs one value-free line when it becomes orphaned, and the Console usage
view lists it.
Ruling 2: an agent with no model key under a key quota refuses
key-quota-no-model-key, passed through the broker, launcher and stop reason.
Ruling 3: covered by the lineage; no mayLaunch change.
Ruling 4: the usage module receives a frozen { readUsageQueue } only.
Ruling 5: every telemetry fixture wait races a 5 s real-timer deadline.
2026-11-02 17:54:07 -06:00
jason.woltje 9256129228 PR 1838 review P3s (#725): approved wording in the tasks requirements test header, REBASE-1.19 location correction
GPT review of the 1.19 rebase found the test header still called the PRD a candidate and the rebase record placed lines 793 and 645 in the wrong requirements. Comment and record only; no assertion changes.
2026-11-02 17:29:16 -06:00
jason.woltje 9f817e6961 Renumber disk-space governance to PRD version 1.19 (PR 1838, #725)
Row 335 landed PRD version 1.18 first, for the REQ-INST-2 correction. The
disk-space governance text that Jason approved as 1.18 in Q289 therefore
lands as 1.19. Only version labels move: the status line, the disk version
source bullet, the "since version" labels in the disk sections, the disk
milestone, and requirements.json "version". The requirement text, IDs,
order, defaults, settings and the 101 records are unchanged.

The prior approval history bullet now runs through version 1.18 and carries
the row 335 lines. The two test pins follow the renumbering.
2026-11-02 16:58:30 -06:00
jason.woltje 80c4a37396 gosalyn: record Jason's Q289 approval of PRD 1.18 2026-11-02 16:55:13 -06:00
jason.woltje 259e59d401 docs(prd): propose disk governance in version 1.18 (#725) 2026-11-02 16:52:04 -06:00
jason.woltje c0c291cda2 merge: join row 333 P5 quotas onto landed row 332 (#1831)
Joins row 333 R2 head 0ef269da9 (base 09a847eda: R1 503b91e56, overlay
2627321f6, docs c012b2e0a and ddb3e961f, R2 fixtures 12eba4b59 and
0ef269da9) onto refactor with row 332 landed at 5df0e9d6f. Run with the
union attributes for BUILD-LOG.md and docs/SESSIONS.md. Two files
conflicted; no other path did.

packages/business/src/launch.mjs, import block: 332 changed the errors
import to `{ BusinessError, refuse }` for the proxy route refusals; 333
added `isDailyModelQuota` from plugins/src/model-quota.mjs for the daily
model leaves under limits.tokens.keys. Kept both: the model-quota import
and the `{ BusinessError, refuse }` import. The rest of launch.mjs merged
without conflict (332's checkModels route handling and checkAccount
credential "proxy"; 333's checkTokenLimits keys block).

packages/plugins/README.md, end of file: 332 appended "Per-session proxy
context (P3)" and 333 appended "Proxy usage telemetry (row333 / P5)" at
the same spot. Kept both sections, P3 first, one blank line between.

The resolved files match the earlier 332 R1 join resolution
(join-resolution.patch) line for line apart from hunk offsets.
2026-11-02 16:33:47 -06:00
jason.woltje 12eba4b599 test(row333 R2): release fixtures carry the plug-in files business imports (#1831)
Row 333 made packages/business/src/launch.mjs and organization.mjs import
packages/plugins/src/model-quota.mjs. The stack-release fixtures copy
packages/business/src and added only plugins/src/kinds.mjs, so their copies
failed with 'Cannot find module .../model-quota.mjs'. Whole cli runs on the
row 333 tip gave stack-release 56 pass 168 fail, stack-release-external
4/21 and stack-upgrade 7/14.

business-imports.mjs reads the imports of packages/business/src and returns
the files outside it that they reach, so both fixture builders copy what
business needs instead of a hard-coded name. No product code, schema or
assertion changes.
2026-11-02 16:27:43 -06:00
jason.woltje 5df0e9d6fa Merge row 332 (P3, #1830) R2 with the lead fix: pi harness config from the proxy, hermetic pi launches in tests 2026-11-02 15:48:51 -06:00
jason.woltje da1f0ceda6 Row 332 R2 (#1830): give the federation acceptance hosts a fake pi key
GPT review F1: prepare() built the host env from HOME, PATH, TMPDIR,
MOSAIC_CONFIG and NODE_EXTRA_CA_CERTS only, so the pi credential preflight
refused the assistant launch (no-session-credential) and the RESULT wait
failed. scripts/test-federation-acceptance.sh red on 6e9f3d723, green with
the fake ZAI_API_KEY the cli tests use.
2026-11-02 15:46:57 -06:00
jason.woltje 39eadf8ba8 Row 332 R2 (#1830): hermetic pi launches in cli tests, pi bundle default, review F2 and F3
The cli tests that launch pi deleted only the session login names, so pi's
preflight passed or refused by whatever provider keys the host exported. A
shared helper now deletes every credential pi's preflight reads and gives pi
launches one made-up key. The refusal itself is unchanged.

pi bundle() takes a default argument again, so a call with none returns the
non-proxy bundle, as before P3. pi.bundle leaves out a launch.models entry
whose provider has no proxy route instead of failing every pi launch (F2);
malformed proxy entries still refuse. The invalid session proxy context
BundleError gets the code invalid-proxy-context. New tests cover F2, the code,
and the three proxy account branches in the launcher (F3).
2026-11-02 15:22:17 -06:00
jason.woltje cab3ef3e8f fix(library): row 267 R2 search hits carry their source universe (#1772)
(cherry picked from commit 3006729160)
2026-11-02 14:40:12 -06:00
jason.woltje ddf20567ee morgana: row 267 r1 notes (filbert-267-static-1): R8 entries dedupe by path and line (N1) with a two-pin case; BUILD.md states the untyped-entity version rule (N2)
(cherry picked from commit ec7fa046c1)
(cherry picked from commit 9ebeb00fbb)
2026-11-02 14:40:12 -06:00
jason.woltje 3b88ef399d morgana: row 267 (C2-15, #1772) build: excluded() reads both exclude forms, the validator checks exclude and pin against the hybrid's sources, R6 for excluded links, R8 pinned value changed, guard refuses an excluded cite beside a hybrid; tests in library, bus and business; survey.test.mjs:75 gains R8 0 (mos-1667); setup sheet section (sage-4389, sage-4407)
(cherry picked from commit 367fd0d240)
(cherry picked from commit 068e1e0f1c)
2026-11-02 14:40:12 -06:00
jason.woltje 4ef251e1a7 test(webui): row 173 Seen intent on the 09a847eda base (#1671)
The row 173 test called setup(false), which starts the page with Show machine sessions off, so the sessions table it waits for never renders. Its sibling uses setup(true). Change the one argument; app.js is unchanged. The same test fails on the r2 tip 6d15eb5fc2, so base drift was not the cause.

(cherry picked from commit 996c79524f)
2026-11-02 14:40:12 -06:00
jason.woltje 8eb37bed32 row 173 (#1671): a Seen click that waited out a Board read posts what its button said, read from data-intent before the wait; a fresh row that already holds it (another viewer's mark) posts nothing and announces 'already seen' or 'already waiting'; board-held test covers both; BUILD.md design and mutant plan; no runs yet (sage-2799)
(cherry picked from commit 02b50ddf35)
(cherry picked from commit d95be10ec4)
2026-11-02 14:40:12 -06:00
jason.woltje 82ca1d3db4 gosalyn: PRD 1.18, REQ-INST-2 prints the Console's one providers entry for the user to add to config.json and the stack never writes config.json (canon invariant 2). Status line 1.18, the 1.18 header sentence and the Version 1.18 source line before 1.17. requirements.json version 1.18 with the count still 87, and the version pin in requirements.test.mjs:24 (row 335, #1833, mos-1671, sage-4418)
(cherry picked from commit d8ec9b5fbc)
(cherry picked from commit ecb7d435e5)
2026-11-02 14:40:12 -06:00
jason.woltje 54328cfae5 Merge commit 'c78f22543' into lead/batch2b-land 2026-11-02 14:40:12 -06:00
jason.woltje 2627321f64 fix(model-proxy): row 333 R1 repair overlay as reviewed (source-tests.patch a78bc385, #1831)
Commits the 18 product paths of the row 333 R1 repair exactly as the reviewed overlay. Packet hashes: source-tests.patch sha256 a78bc385801b64be270fb9d6e84672c443738a5fce8eb68f7d2a01359a57a770 (40623 bytes), INDEX.json sha256 3eb9b8d10445aa328be3b854385e4792dda2c5712b19d443d485d1b00a18d0f8, changed-source-tests.json sha256 42f770fc3e2384362efd1e416091355c064b6cca22dd40f3b5ef8f7b67e43a52. The committed bytes were checked by applying source-tests.patch to 503b91e56 in a scratch tree and comparing the 18 paths. The approvals are source only: R2 (APPROVE source-only, 2026-10-26 23:32:39Z) and Boyd's first review (APPROVE, source only, 2026-10-27T00:27:55Z), both on HEAD 503b91e56 plus this overlay. No test has run on these bytes yet.
2026-11-02 13:36:45 -06:00
jason.woltje c78f225433 test(cli): row 334 byte-identity baseline after #385, proxy refusal text (#1832) 2026-11-02 13:10:29 -06:00
jason.woltje c1e9841d36 Merge PR #1836 R5: fetch chat assets through the SSO public Host (#385) 2026-11-02 12:58:25 -06:00
jason.woltje fbf8d61a4c test(webui): fetch chat assets through the SSO public Host (#385) 2026-11-02 12:55:32 -06:00
jason.woltje 2b3e3ec83b Merge row 334 (#1832): Case 2 proxy unit in case2-unit.sh and case2-install.sh 2026-11-02 12:50:15 -06:00
jason.woltje 418f00bce2 Merge PR #1836: Require verified OIDC for Console human writes (#385) 2026-11-02 12:31:19 -06:00
jason.woltje a7a433e271 Merge PR #1837: Pin the worker to the patched immutable Node24 base (#470) 2026-11-02 12:31:19 -06:00
jason.woltje 664d8ef3d3 Merge PR #1835: Limit legacy worker mounts to selected inputs and state (#156) 2026-11-02 12:31:19 -06:00
jason.woltje 484aef7e2a fix(upgrade): refuse a pre-#385 library Console unit before units stop (#385) 2026-11-02 12:19:07 -06:00
jason.woltje d0ddfa8de2 fix(upgrade): refuse legacy library --send before units stop (#385) 2026-11-02 12:03:59 -06:00
jason.woltje ab2bc23c7f fix(console): keep preview deployment profiles read-only (#385) 2026-10-29 00:54:30 -05:00
jason.woltje 1d6dae6fe4 fix(worker): snapshot fork input before container binding (#156) 2026-10-29 00:46:50 -05:00
jason.woltje 7fff6a20e6 fix(testing): bind image receipts to pinned build base (#470) 2026-10-29 00:33:01 -05:00
jason.woltje a19b936a8c test(web): document canonical NAT64 policy boundary (#710) 2026-10-29 00:24:04 -05:00
jason.woltje ee151685e9 fix(worker): limit legacy mounts to selected inputs and outputs (#156) 2026-10-29 00:19:26 -05:00
jason.woltje 9936a1be1a fix(webui): require verified OIDC for human writes (#385) 2026-10-29 00:19:02 -05:00
jason.woltje 4cf888c04c fix(web): refuse hexadecimal mapped IPv6 private targets (#710) 2026-10-29 00:18:00 -05:00
jason.woltje d6dc04e84f Join P3 harness context to landed P2 admission with private same-key delivery 2026-10-26 18:02:58 -05:00
jason.woltje 503b91e561 feat: add optional proxy usage and human model-key quotas (row333) 2026-10-26 17:55:26 -05:00
jason.woltje c4bba5d2a3 row334: render P1 proxy system unit in Case 2 installs 2026-10-26 17:39:34 -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 2d3458695a test: reap owned copy children on external gate termination 2026-10-26 10:44:35 -05:00
jason.woltje 6efc4a6921 fix: make timing regressions depend on explicit probe and child outcomes 2026-10-26 10:40:04 -05:00
jason.woltje 5d1734dd01 Give row 288 creative tool fixture its required Gitea reference 2026-10-25 00:08:19 -05:00
jason.woltje c10f17cfeb Correct row 288 broker grant and bare mirror fixtures 2026-10-25 00:08:19 -05:00
jason.woltje acc0f8acb0 Fix bare library deletion with a private index-info input file 2026-10-25 00:08:19 -05:00
jason.woltje 64a40e712d Untested: record row 288 landed-base transplant and import run list 2026-10-25 00:08:19 -05:00
jason.woltje 90a0d690da Untested: row 288 contract and import-list preflight (sage-4282) 2026-10-25 00:08:19 -05:00
jason.woltje d8bd081b20 Untested: clarify existing blob requirement in library delete tool (#1793) 2026-10-25 00:08:19 -05:00
jason.woltje 4176f3a506 Untested: add library write tools and served blob integration (#1793) 2026-10-25 00:08:19 -05:00
jason.woltje 1db5167795 Untested: migrate creative tool snapshots to eight or ten names (mos-1523) 2026-10-25 00:08:19 -05:00
jason.woltje 56e9844528 Untested: retain library notice after push when publication fails (#1793) 2026-10-25 00:08:18 -05:00