1599 lines
56 KiB
Plaintext
1599 lines
56 KiB
Plaintext
Sat Oct 24 01:13:50 UTC 2026
|
|
20:13:50 up 10 days, 11:33, 2 users, load average: 1.36, 1.59, 2.49
|
|
CLEAR
|
|
TMPDIR=/mnt/storage/scratch/tmp/yWVbwY bytes=31
|
|
TAP version 13
|
|
# Subtest: a grant's level is collaborator or viewer
|
|
ok 1 - a grant's level is collaborator or viewer
|
|
---
|
|
duration_ms: 1.10943
|
|
type: 'test'
|
|
...
|
|
# Subtest: any other level refuses with the key path named
|
|
ok 2 - any other level refuses with the key path named
|
|
---
|
|
duration_ms: 0.652768
|
|
type: 'test'
|
|
...
|
|
# Subtest: covers tells a viewer grant from a collaborator grant
|
|
ok 3 - covers tells a viewer grant from a collaborator grant
|
|
---
|
|
duration_ms: 0.143274
|
|
type: 'test'
|
|
...
|
|
# Subtest: covers refuses a call with no level, so a viewer grant can't slip past a collaborator check
|
|
ok 4 - covers refuses a call with no level, so a viewer grant can't slip past a collaborator check
|
|
---
|
|
duration_ms: 0.112726
|
|
type: 'test'
|
|
...
|
|
# Subtest: a viewer grant still needs its business, project, instance and expiry to cover
|
|
ok 5 - a viewer grant still needs its business, project, instance and expiry to cover
|
|
---
|
|
duration_ms: 0.110204
|
|
type: 'test'
|
|
...
|
|
# Subtest: a valid document passes and comes back frozen
|
|
ok 6 - a valid document passes and comes back frozen
|
|
---
|
|
duration_ms: 1.837438
|
|
type: 'test'
|
|
...
|
|
# Subtest: checkAccess does not freeze or alias the caller's document
|
|
ok 7 - checkAccess does not freeze or alias the caller's document
|
|
---
|
|
duration_ms: 0.207873
|
|
type: 'test'
|
|
...
|
|
# Subtest: LEVELS is the single allowed level set, collaborator and viewer (row 193a)
|
|
ok 8 - LEVELS is the single allowed level set, collaborator and viewer (row 193a)
|
|
---
|
|
duration_ms: 0.084213
|
|
type: 'test'
|
|
...
|
|
# Subtest: accessFilePath is access.json in the config directory
|
|
ok 9 - accessFilePath is access.json in the config directory
|
|
---
|
|
duration_ms: 0.29189
|
|
type: 'test'
|
|
...
|
|
# Subtest: top level: object, unknown keys, accessVersion, revision, arrays
|
|
ok 10 - top level: object, unknown keys, accessVersion, revision, arrays
|
|
---
|
|
duration_ms: 0.850622
|
|
type: 'test'
|
|
...
|
|
# Subtest: users: unknown keys and the id rule
|
|
ok 11 - users: unknown keys and the id rule
|
|
---
|
|
duration_ms: 0.245336
|
|
type: 'test'
|
|
...
|
|
# Subtest: users: human, tester and any business's human are refused
|
|
ok 12 - users: human, tester and any business's human are refused
|
|
---
|
|
duration_ms: 0.231699
|
|
type: 'test'
|
|
...
|
|
# Subtest: users: home is a given peer or local
|
|
ok 13 - users: home is a given peer or local
|
|
---
|
|
duration_ms: 0.19616
|
|
type: 'test'
|
|
...
|
|
# Subtest: users: subjects, provider, sub, uniqueness and owner subjects
|
|
ok 14 - users: subjects, provider, sub, uniqueness and owner subjects
|
|
---
|
|
duration_ms: 0.547482
|
|
type: 'test'
|
|
...
|
|
# Subtest: grants: unknown keys, id, user and business
|
|
ok 15 - grants: unknown keys, id, user and business
|
|
---
|
|
duration_ms: 0.431975
|
|
type: 'test'
|
|
...
|
|
# Subtest: grants: projects is ["*"] or distinct lowercase UUIDs
|
|
ok 16 - grants: projects is ["*"] or distinct lowercase UUIDs
|
|
---
|
|
duration_ms: 0.615138
|
|
type: 'test'
|
|
...
|
|
# Subtest: grants: instances is ["*"] or distinct declared instances of that business
|
|
ok 17 - grants: instances is ["*"] or distinct declared instances of that business
|
|
---
|
|
duration_ms: 0.316738
|
|
type: 'test'
|
|
...
|
|
# Subtest: grants: any level other than collaborator or viewer refuses, naming grants[i].level
|
|
ok 18 - grants: any level other than collaborator or viewer refuses, naming grants[i].level
|
|
---
|
|
duration_ms: 0.372768
|
|
type: 'test'
|
|
...
|
|
# Subtest: grants: expires is optional ISO time, and a past expiry is not refused
|
|
ok 19 - grants: expires is optional ISO time, and a past expiry is not refused
|
|
---
|
|
duration_ms: 0.417075
|
|
type: 'test'
|
|
...
|
|
# Subtest: the context is required and checked
|
|
ok 20 - the context is required and checked
|
|
---
|
|
duration_ms: 0.269609
|
|
type: 'test'
|
|
...
|
|
# Subtest: loadAccess reads a valid file and checks it
|
|
ok 21 - loadAccess reads a valid file and checks it
|
|
---
|
|
duration_ms: 0.379495
|
|
type: 'test'
|
|
...
|
|
# Subtest: loadAccess refuses a missing file, a symlink and a directory with exit 4
|
|
ok 22 - loadAccess refuses a missing file, a symlink and a directory with exit 4
|
|
---
|
|
duration_ms: 0.278842
|
|
type: 'test'
|
|
...
|
|
# Subtest: loadAccess refuses another owner and group or other write
|
|
ok 23 - loadAccess refuses another owner and group or other write
|
|
---
|
|
duration_ms: 0.303728
|
|
type: 'test'
|
|
...
|
|
# Subtest: loadAccess refuses bad JSON and a bad document with exit 2
|
|
ok 24 - loadAccess refuses bad JSON and a bad document with exit 2
|
|
---
|
|
duration_ms: 0.301384
|
|
type: 'test'
|
|
...
|
|
# Subtest: covers: * and listed ids match
|
|
ok 25 - covers: * and listed ids match
|
|
---
|
|
duration_ms: 0.172143
|
|
type: 'test'
|
|
...
|
|
# Subtest: covers: an unlisted project, instance or business doesn't match
|
|
ok 26 - covers: an unlisted project, instance or business doesn't match
|
|
---
|
|
duration_ms: 0.110086
|
|
type: 'test'
|
|
...
|
|
# Subtest: covers: an expired grant doesn't match, at and after the instant
|
|
ok 27 - covers: an expired grant doesn't match, at and after the instant
|
|
---
|
|
duration_ms: 0.111698
|
|
type: 'test'
|
|
...
|
|
# Subtest: covers: level is the least level asked for (row 193a)
|
|
ok 28 - covers: level is the least level asked for (row 193a)
|
|
---
|
|
duration_ms: 0.107677
|
|
type: 'test'
|
|
...
|
|
# Subtest: covers: a missing or unknown level throws (row 193a, N1)
|
|
ok 29 - covers: a missing or unknown level throws (row 193a, N1)
|
|
---
|
|
duration_ms: 0.195382
|
|
type: 'test'
|
|
...
|
|
# Subtest: covers: a grant with an unknown level covers nothing (row 193a)
|
|
ok 30 - covers: a grant with an unknown level covers nothing (row 193a)
|
|
---
|
|
duration_ms: 0.089407
|
|
type: 'test'
|
|
...
|
|
# Subtest: covers: now must be a valid Date
|
|
ok 31 - covers: now must be a valid Date
|
|
---
|
|
duration_ms: 0.106144
|
|
type: 'test'
|
|
...
|
|
# Subtest: today's files load unchanged: identity, publish and remote are optional
|
|
ok 32 - today's files load unchanged: identity, publish and remote are optional
|
|
---
|
|
duration_ms: 4.860046
|
|
type: 'test'
|
|
...
|
|
# Subtest: a granted agent loads with its identity, grant and the project's upstream
|
|
ok 33 - a granted agent loads with its identity, grant and the project's upstream
|
|
---
|
|
duration_ms: 1.853965
|
|
type: 'test'
|
|
...
|
|
# Subtest: N10: publish needs identity and a gitea definition, and the error names the grant
|
|
ok 34 - N10: publish needs identity and a gitea definition, and the error names the grant
|
|
---
|
|
duration_ms: 2.012026
|
|
type: 'test'
|
|
...
|
|
# Subtest: publish names declared projects that have a remote, each once
|
|
ok 35 - publish names declared projects that have a remote, each once
|
|
---
|
|
duration_ms: 2.769912
|
|
type: 'test'
|
|
...
|
|
# Subtest: identity fields are checked
|
|
ok 36 - identity fields are checked
|
|
---
|
|
duration_ms: 2.840112
|
|
type: 'test'
|
|
...
|
|
# Subtest: D9c: the upstream must be its own normalized form, exactly /OWNER/REPO
|
|
ok 37 - D9c: the upstream must be its own normalized form, exactly /OWNER/REPO
|
|
---
|
|
duration_ms: 8.26046
|
|
type: 'test'
|
|
...
|
|
# Subtest: D9c: one .git is stripped, and the fork is built from the stripped name
|
|
ok 38 - D9c: one .git is stripped, and the fork is built from the stripped name
|
|
---
|
|
duration_ms: 0.652902
|
|
type: 'test'
|
|
...
|
|
# Subtest: D9c: gitea.url names the instance only
|
|
ok 39 - D9c: gitea.url names the instance only
|
|
---
|
|
duration_ms: 2.625989
|
|
type: 'test'
|
|
...
|
|
# Subtest: the upstream's host and port must be the agent's Gitea's
|
|
ok 40 - the upstream's host and port must be the agent's Gitea's
|
|
---
|
|
duration_ms: 1.269223
|
|
type: 'test'
|
|
...
|
|
# Subtest: remote-not-fork: an upstream the agent's own user owns, compared without case
|
|
ok 41 - remote-not-fork: an upstream the agent's own user owns, compared without case
|
|
---
|
|
duration_ms: 1.266086
|
|
type: 'test'
|
|
...
|
|
# Subtest: store references: own path only (design D1, D3a)
|
|
ok 42 - store references: own path only (design D1, D3a)
|
|
---
|
|
duration_ms: 0.229252
|
|
type: 'test'
|
|
...
|
|
# Subtest: the role file loads and resolves through loadBusiness
|
|
ok 43 - the role file loads and resolves through loadBusiness
|
|
---
|
|
duration_ms: 5.039801
|
|
type: 'test'
|
|
...
|
|
# Subtest: the shipped file is exactly the approved list
|
|
ok 44 - the shipped file is exactly the approved list
|
|
---
|
|
duration_ms: 0.553056
|
|
type: 'test'
|
|
...
|
|
# Subtest: the assistant's authority is message.send and record.write within role
|
|
ok 45 - the assistant's authority is message.send and record.write within role
|
|
---
|
|
duration_ms: 1.467348
|
|
type: 'test'
|
|
...
|
|
# Subtest: the assistant talks to the user and the chief of staff only, and no other shipped role is limited
|
|
ok 46 - the assistant talks to the user and the chief of staff only, and no other shipped role is limited
|
|
---
|
|
duration_ms: 0.615728
|
|
type: 'test'
|
|
...
|
|
# Subtest: a business grant through limits does not widen the role
|
|
ok 47 - a business grant through limits does not widen the role
|
|
---
|
|
duration_ms: 4.764314
|
|
type: 'test'
|
|
...
|
|
# Subtest: a launch block whose by is the assistant is refused
|
|
ok 48 - a launch block whose by is the assistant is refused
|
|
---
|
|
duration_ms: 1.236799
|
|
type: 'test'
|
|
...
|
|
# Subtest: the instance takes no credential references and no tracker
|
|
ok 49 - the instance takes no credential references and no tracker
|
|
---
|
|
duration_ms: 1.587369
|
|
type: 'test'
|
|
...
|
|
# Subtest: an arbiter whose role definition declares messaging lists is refused, for each kind
|
|
ok 50 - an arbiter whose role definition declares messaging lists is refused, for each kind
|
|
---
|
|
duration_ms: 3.266375
|
|
type: 'test'
|
|
...
|
|
# Subtest: an arbiter without messaging lists is accepted beside the limited assistant
|
|
ok 51 - an arbiter without messaging lists is accepted beside the limited assistant
|
|
---
|
|
duration_ms: 1.426671
|
|
type: 'test'
|
|
...
|
|
# Subtest: the contract passes work to the chief of staff and directs no one
|
|
ok 52 - the contract passes work to the chief of staff and directs no one
|
|
---
|
|
duration_ms: 0.955891
|
|
type: 'test'
|
|
...
|
|
# Subtest: REQ-HARN-2: the assistant, companion and research hold the web grant, and no other role file does
|
|
ok 53 - REQ-HARN-2: the assistant, companion and research hold the web grant, and no other role file does
|
|
---
|
|
duration_ms: 3.489716
|
|
type: 'test'
|
|
...
|
|
# Subtest: C2-04: library mappings load without roots, remain frozen, and retain mapping refusals
|
|
ok 54 - C2-04: library mappings load without roots, remain frozen, and retain mapping refusals
|
|
---
|
|
duration_ms: 10.882024
|
|
type: 'test'
|
|
...
|
|
# Subtest: C2-04: an otherwise valid publish grant cannot name a library repo
|
|
ok 55 - C2-04: an otherwise valid publish grant cannot name a library repo
|
|
---
|
|
duration_ms: 1.46823
|
|
type: 'test'
|
|
...
|
|
# Subtest: config directory and file path follow MOSAIC_CONFIG
|
|
ok 56 - config directory and file path follow MOSAIC_CONFIG
|
|
---
|
|
duration_ms: 0.195759
|
|
type: 'test'
|
|
...
|
|
# Subtest: the fixture business validates and comes back frozen
|
|
ok 57 - the fixture business validates and comes back frozen
|
|
---
|
|
duration_ms: 0.949014
|
|
type: 'test'
|
|
...
|
|
# Subtest: two instances may share a definition
|
|
ok 58 - two instances may share a definition
|
|
---
|
|
duration_ms: 0.918951
|
|
type: 'test'
|
|
...
|
|
# Subtest: top-level refusals
|
|
ok 59 - top-level refusals
|
|
---
|
|
duration_ms: 2.582393
|
|
type: 'test'
|
|
...
|
|
# Subtest: arbiters and projects
|
|
ok 60 - arbiters and projects
|
|
---
|
|
duration_ms: 4.022674
|
|
type: 'test'
|
|
...
|
|
# Subtest: role instances
|
|
ok 61 - role instances
|
|
---
|
|
duration_ms: 1.979521
|
|
type: 'test'
|
|
...
|
|
# Subtest: Vikunja bots
|
|
ok 62 - Vikunja bots
|
|
---
|
|
duration_ms: 4.771263
|
|
type: 'test'
|
|
...
|
|
# Subtest: a role without Vikunja takes no tracker block
|
|
ok 63 - a role without Vikunja takes no tracker block
|
|
---
|
|
duration_ms: 3.386989
|
|
type: 'test'
|
|
...
|
|
# Subtest: credential references match the definition's services
|
|
ok 64 - credential references match the definition's services
|
|
---
|
|
duration_ms: 2.046415
|
|
type: 'test'
|
|
...
|
|
# Subtest: launch
|
|
ok 65 - launch
|
|
---
|
|
duration_ms: 7.071682
|
|
type: 'test'
|
|
...
|
|
# Subtest: REQ-THREAD-2 REQ-LAUNCH-1 launch.threadIdleSeconds: absent is the default, a positive integer is used, anything else refuses
|
|
ok 66 - REQ-THREAD-2 REQ-LAUNCH-1 launch.threadIdleSeconds: absent is the default, a positive integer is used, anything else refuses
|
|
---
|
|
duration_ms: 3.791886
|
|
type: 'test'
|
|
...
|
|
# Subtest: loadBusiness: file checks
|
|
ok 67 - loadBusiness: file checks
|
|
---
|
|
duration_ms: 1.7915
|
|
type: 'test'
|
|
...
|
|
# Subtest: loadBusiness: not a regular file
|
|
ok 68 - loadBusiness: not a regular file
|
|
---
|
|
duration_ms: 40.53479
|
|
type: 'test'
|
|
...
|
|
# Subtest: loading writes nothing
|
|
ok 69 - loading writes nothing
|
|
---
|
|
duration_ms: 1.071271
|
|
type: 'test'
|
|
...
|
|
# Subtest: names that are Object.prototype properties don't count as declared
|
|
ok 70 - names that are Object.prototype properties don't count as declared
|
|
---
|
|
duration_ms: 2.940556
|
|
type: 'test'
|
|
...
|
|
# Subtest: the shipped example refuses as written and validates once filled in
|
|
ok 71 - the shipped example refuses as written and validates once filled in
|
|
---
|
|
duration_ms: 1.066194
|
|
type: 'test'
|
|
...
|
|
# Subtest: persona vars: agent layer, creative definition only, both or neither
|
|
ok 72 - persona vars: agent layer, creative definition only, both or neither
|
|
---
|
|
duration_ms: 7.536341
|
|
type: 'test'
|
|
...
|
|
# Subtest: row 194 keep, noHire and retired validate, and a file without them loads as before
|
|
ok 73 - row 194 keep, noHire and retired validate, and a file without them loads as before
|
|
---
|
|
duration_ms: 1.74472
|
|
type: 'test'
|
|
...
|
|
# Subtest: row 194 each bad keep, noHire or retired entry refuses
|
|
ok 74 - row 194 each bad keep, noHire or retired entry refuses
|
|
---
|
|
duration_ms: 4.944111
|
|
type: 'test'
|
|
...
|
|
# Subtest: row 323: committed Case 1 document loads unchanged through the business loader
|
|
ok 75 - row 323: committed Case 1 document loads unchanged through the business loader
|
|
---
|
|
duration_ms: 3.918271
|
|
type: 'test'
|
|
...
|
|
# Subtest: row 323: real business validate accepts the Case 1 fixture without tracker credentials
|
|
ok 76 - row 323: real business validate accepts the Case 1 fixture without tracker credentials
|
|
---
|
|
duration_ms: 59.023801
|
|
type: 'test'
|
|
...
|
|
# Subtest: row 323: real factory install accepts the document's scratch input and writes it unchanged
|
|
ok 77 - row 323: real factory install accepts the document's scratch input and writes it unchanged
|
|
---
|
|
duration_ms: 157.158626
|
|
type: 'test'
|
|
...
|
|
# Subtest: row 323: the Case 1 business boots without a tracker or @sync credential
|
|
ok 78 - row 323: the Case 1 business boots without a tracker or @sync credential
|
|
---
|
|
duration_ms: 55.768448
|
|
type: 'test'
|
|
...
|
|
# Subtest: row 323: factory install refuses bus.tester false before writing
|
|
ok 79 - row 323: factory install refuses bus.tester false before writing
|
|
---
|
|
duration_ms: 33.452341
|
|
type: 'test'
|
|
...
|
|
# Subtest: row 323: literal library key refuses through final business validation
|
|
ok 80 - row 323: literal library key refuses through final business validation
|
|
---
|
|
duration_ms: 151.936403
|
|
type: 'test'
|
|
...
|
|
# Subtest: row 323: a library project refuses through the factory profile plan
|
|
ok 81 - row 323: a library project refuses through the factory profile plan
|
|
---
|
|
duration_ms: 33.782836
|
|
type: 'test'
|
|
...
|
|
# Subtest: row 325: the Case 1 project's sole key matches the repository project id
|
|
ok 82 - row 325: the Case 1 project's sole key matches the repository project id
|
|
---
|
|
duration_ms: 1.362733
|
|
type: 'test'
|
|
...
|
|
# Subtest: row 325: real business validate reports the copied repository project valid
|
|
ok 83 - row 325: real business validate reports the copied repository project valid
|
|
---
|
|
duration_ms: 62.466168
|
|
type: 'test'
|
|
...
|
|
# Subtest: row 325: the old mosaic-stack project key refuses against those same project bytes
|
|
ok 84 - row 325: the old mosaic-stack project key refuses against those same project bytes
|
|
---
|
|
duration_ms: 62.690903
|
|
type: 'test'
|
|
...
|
|
# Subtest: the role file loads and resolves through loadBusiness
|
|
ok 85 - the role file loads and resolves through loadBusiness
|
|
---
|
|
duration_ms: 5.494346
|
|
type: 'test'
|
|
...
|
|
# Subtest: the shipped file is exactly the approved list
|
|
ok 86 - the shipped file is exactly the approved list
|
|
---
|
|
duration_ms: 0.177636
|
|
type: 'test'
|
|
...
|
|
# Subtest: the resolved record matches the approved list, so a widened file fails
|
|
ok 87 - the resolved record matches the approved list, so a widened file fails
|
|
---
|
|
duration_ms: 1.410569
|
|
type: 'test'
|
|
...
|
|
# Subtest: the chief of staff holds role.launch, message.send, role.end, organization.change, record.write, instance.name, role.hire and role.fire; every other action is gated
|
|
ok 88 - the chief of staff holds role.launch, message.send, role.end, organization.change, record.write, instance.name, role.hire and role.fire; every other action is gated
|
|
---
|
|
duration_ms: 1.314988
|
|
type: 'test'
|
|
...
|
|
# Subtest: the pm does not hold role.launch
|
|
ok 89 - the pm does not hold role.launch
|
|
---
|
|
duration_ms: 1.448417
|
|
type: 'test'
|
|
...
|
|
# Subtest: a business grant of a gated action through limits does not widen the role
|
|
ok 90 - a business grant of a gated action through limits does not widen the role
|
|
---
|
|
duration_ms: 1.167946
|
|
type: 'test'
|
|
...
|
|
# Subtest: a limit that drops role.launch leaves the chief of staff with no launch block
|
|
ok 91 - a limit that drops role.launch leaves the chief of staff with no launch block
|
|
---
|
|
duration_ms: 0.912202
|
|
type: 'test'
|
|
...
|
|
# Subtest: a launch block whose by is the pm instance is refused
|
|
ok 92 - a launch block whose by is the pm instance is refused
|
|
---
|
|
duration_ms: 1.173552
|
|
type: 'test'
|
|
...
|
|
# Subtest: the contract names no duty to talk to the human and the pm contract no launch
|
|
ok 93 - the contract names no duty to talk to the human and the pm contract no launch
|
|
---
|
|
duration_ms: 0.300021
|
|
type: 'test'
|
|
...
|
|
# Subtest: the instance takes no credential references and no tracker
|
|
ok 94 - the instance takes no credential references and no tracker
|
|
---
|
|
duration_ms: 1.817956
|
|
type: 'test'
|
|
...
|
|
# Subtest: C2-04: business validate and resolve skip a library before code projects and credential checks
|
|
ok 95 - C2-04: business validate and resolve skip a library before code projects and credential checks
|
|
---
|
|
duration_ms: 202.461208
|
|
type: 'test'
|
|
...
|
|
# Subtest: usage errors exit 4
|
|
ok 96 - usage errors exit 4
|
|
---
|
|
duration_ms: 272.594428
|
|
type: 'test'
|
|
...
|
|
# Subtest: validate: a good business exits 0 and prints instance digests
|
|
ok 97 - validate: a good business exits 0 and prints instance digests
|
|
---
|
|
duration_ms: 70.124857
|
|
type: 'test'
|
|
...
|
|
# Subtest: validate: project files
|
|
ok 98 - validate: project files
|
|
---
|
|
duration_ms: 322.230087
|
|
type: 'test'
|
|
...
|
|
# Subtest: validate: missing files and a broken system config
|
|
ok 99 - validate: missing files and a broken system config
|
|
---
|
|
duration_ms: 228.840288
|
|
type: 'test'
|
|
...
|
|
# Subtest: validate: credential reference problems exit 2 and name each one
|
|
ok 100 - validate: credential reference problems exit 2 and name each one
|
|
---
|
|
duration_ms: 67.865805
|
|
type: 'test'
|
|
...
|
|
# Subtest: validate: a not-issued store agent dated today passes, and an issued one with a past expiry fails
|
|
ok 101 - validate: a not-issued store agent dated today passes, and an issued one with a past expiry fails
|
|
---
|
|
duration_ms: 129.406811
|
|
type: 'test'
|
|
...
|
|
# Subtest: validate: a token file inside the repository is refused
|
|
ok 102 - validate: a token file inside the repository is refused
|
|
---
|
|
duration_ms: 69.546335
|
|
type: 'test'
|
|
...
|
|
# Subtest: validate: role definitions come from MOSAIC_ROLES_DIR
|
|
ok 103 - validate: role definitions come from MOSAIC_ROLES_DIR
|
|
---
|
|
duration_ms: 198.052017
|
|
type: 'test'
|
|
...
|
|
# Subtest: resolve: prints one instance's record
|
|
ok 104 - resolve: prints one instance's record
|
|
---
|
|
duration_ms: 267.218193
|
|
type: 'test'
|
|
...
|
|
# Subtest: resolve: refusals
|
|
ok 105 - resolve: refusals
|
|
---
|
|
duration_ms: 380.417689
|
|
type: 'test'
|
|
...
|
|
# Subtest: parse: exactly one of file or env, plus the service's date
|
|
ok 106 - parse: exactly one of file or env, plus the service's date
|
|
---
|
|
duration_ms: 1.860826
|
|
type: 'test'
|
|
...
|
|
# Subtest: check: a good file has no problems
|
|
ok 107 - check: a good file has no problems
|
|
---
|
|
duration_ms: 0.613884
|
|
type: 'test'
|
|
...
|
|
# Subtest: check never opens the file: a write-only token passes
|
|
ok 108 - check never opens the file: a write-only token passes
|
|
---
|
|
duration_ms: 0.258551
|
|
type: 'test'
|
|
...
|
|
# Subtest: check: file problems
|
|
ok 109 - check: file problems
|
|
---
|
|
duration_ms: 0.645272
|
|
type: 'test'
|
|
...
|
|
# Subtest: check: token files can't live in the repository or dataRoot, even through a linked directory
|
|
ok 110 - check: token files can't live in the repository or dataRoot, even through a linked directory
|
|
---
|
|
duration_ms: 0.607703
|
|
type: 'test'
|
|
...
|
|
# Subtest: check: dates and environment references
|
|
ok 111 - check: dates and environment references
|
|
---
|
|
duration_ms: 0.295511
|
|
type: 'test'
|
|
...
|
|
# Subtest: each definition loads, with a contract file, and is exactly the approved list
|
|
ok 112 - each definition loads, with a contract file, and is exactly the approved list
|
|
---
|
|
duration_ms: 2.350764
|
|
type: 'test'
|
|
...
|
|
# Subtest: an organization file that declares them passes, and each resolves to least privilege
|
|
ok 113 - an organization file that declares them passes, and each resolves to least privilege
|
|
---
|
|
duration_ms: 4.488141
|
|
type: 'test'
|
|
...
|
|
# Subtest: the chief of staff launches each one; no other role does
|
|
ok 114 - the chief of staff launches each one; no other role does
|
|
---
|
|
duration_ms: 2.362049
|
|
type: 'test'
|
|
...
|
|
# Subtest: a C-suite role can't be made the launcher: launch.by must hold role.launch
|
|
ok 115 - a C-suite role can't be made the launcher: launch.by must hold role.launch
|
|
---
|
|
duration_ms: 1.265672
|
|
type: 'test'
|
|
...
|
|
# Subtest: limits can narrow a C-suite role but never widen it
|
|
ok 116 - limits can narrow a C-suite role but never widen it
|
|
---
|
|
duration_ms: 1.293898
|
|
type: 'test'
|
|
...
|
|
# Subtest: any unknown key, tool, action or version in a role file is refused
|
|
ok 117 - any unknown key, tool, action or version in a role file is refused
|
|
---
|
|
duration_ms: 0.390462
|
|
type: 'test'
|
|
...
|
|
# Subtest: row 298: checkGrantScope takes the D2 shape and refuses anything else
|
|
ok 118 - row 298: checkGrantScope takes the D2 shape and refuses anything else
|
|
---
|
|
duration_ms: 1.208581
|
|
type: 'test'
|
|
...
|
|
# Subtest: row 298: a missing scope is empty and a bad one falls back to empty, which covers nothing
|
|
ok 119 - row 298: a missing scope is empty and a bad one falls back to empty, which covers nothing
|
|
---
|
|
duration_ms: 0.226655
|
|
type: 'test'
|
|
...
|
|
# Subtest: row 298: a Gitea grant is in scope only when its agent and every project are listed
|
|
ok 120 - row 298: a Gitea grant is in scope only when its agent and every project are listed
|
|
---
|
|
duration_ms: 0.110045
|
|
type: 'test'
|
|
...
|
|
# Subtest: row 298 (sage-3594 Q2): host commands match whole argv tokens, and enrollment is never in scope
|
|
ok 121 - row 298 (sage-3594 Q2): host commands match whole argv tokens, and enrollment is never in scope
|
|
---
|
|
duration_ms: 0.160261
|
|
type: 'test'
|
|
...
|
|
# Subtest: row 298: a bad grantScope in the file still loads, and the read shows the fallback
|
|
ok 122 - row 298: a bad grantScope in the file still loads, and the read shows the fallback
|
|
---
|
|
duration_ms: 8.159
|
|
type: 'test'
|
|
...
|
|
# Subtest: row 298: the writer checks the scope, logs the change and removes the key for {}
|
|
ok 123 - row 298: the writer checks the scope, logs the change and removes the key for {}
|
|
---
|
|
duration_ms: 29.000935
|
|
type: 'test'
|
|
...
|
|
# Subtest: row 298 (sage-3594 Q1): the general writers can't write grantScope
|
|
ok 124 - row 298 (sage-3594 Q1): the general writers can't write grantScope
|
|
---
|
|
duration_ms: 5.964765
|
|
type: 'test'
|
|
...
|
|
# Subtest: REQ-WAIT-1: GATED_ONLY is exactly the hard waits; the new actions are in the vocabulary
|
|
ok 125 - REQ-WAIT-1: GATED_ONLY is exactly the hard waits; the new actions are in the vocabulary
|
|
---
|
|
duration_ms: 0.86658
|
|
type: 'test'
|
|
...
|
|
# Subtest: REQ-ROLE-2: END_PROTECTED includes the assistant's thread definition
|
|
ok 126 - REQ-ROLE-2: END_PROTECTED includes the assistant's thread definition
|
|
---
|
|
duration_ms: 0.120414
|
|
type: 'test'
|
|
...
|
|
# Subtest: REQ-COS-3: role.hire and role.fire are routed, not hard waits
|
|
ok 127 - REQ-COS-3: role.hire and role.fire are routed, not hard waits
|
|
---
|
|
duration_ms: 0.093009
|
|
type: 'test'
|
|
...
|
|
# Subtest: REQ-WAIT-3: every action is routed or a hard wait, never both, and the routed list names only actions
|
|
ok 128 - REQ-WAIT-3: every action is routed or a hard wait, never both, and the routed list names only actions
|
|
---
|
|
duration_ms: 0.123379
|
|
type: 'test'
|
|
...
|
|
# Subtest: REQ-WAIT-3: instance.name is routed under REQ-MSG-2 (1.5), not a hard wait (row 141, sage-0589)
|
|
ok 129 - REQ-WAIT-3: instance.name is routed under REQ-MSG-2 (1.5), not a hard wait (row 141, sage-0589)
|
|
---
|
|
duration_ms: 0.079928
|
|
type: 'test'
|
|
...
|
|
# Subtest: REQ-WAIT-2: a role listing a hard wait at either class is refused; the actions that left can be granted
|
|
ok 130 - REQ-WAIT-2: a role listing a hard wait at either class is refused; the actions that left can be granted
|
|
---
|
|
duration_ms: 2.490576
|
|
type: 'test'
|
|
...
|
|
# Subtest: S1: the business file refuses hosts at the top level and in a role, and host.<id> references
|
|
ok 131 - S1: the business file refuses hosts at the top level and in a role, and host.<id> references
|
|
---
|
|
duration_ms: 12.390365
|
|
type: 'test'
|
|
...
|
|
# Subtest: T1: address, user and host key checks, which the enrollment raise uses
|
|
ok 132 - T1: address, user and host key checks, which the enrollment raise uses
|
|
---
|
|
duration_ms: 4.567719
|
|
type: 'test'
|
|
...
|
|
# Subtest: T26: no wildcard and no shell, runner or interpreter as a prefix
|
|
ok 133 - T26: no wildcard and no shell, runner or interpreter as a prefix
|
|
---
|
|
duration_ms: 1.410887
|
|
type: 'test'
|
|
...
|
|
# Subtest: D6: argv shape and the literal prefix match
|
|
ok 134 - D6: argv shape and the literal prefix match
|
|
---
|
|
duration_ms: 0.274399
|
|
type: 'test'
|
|
...
|
|
# Subtest: C2-04: instance settings skip a library while checking a later code project
|
|
ok 135 - C2-04: instance settings skip a library while checking a later code project
|
|
---
|
|
duration_ms: 24.648482
|
|
type: 'test'
|
|
...
|
|
# Subtest: row 165 read lists each instance and the definitions add accepts
|
|
ok 136 - row 165 read lists each instance and the definitions add accepts
|
|
---
|
|
duration_ms: 2.549247
|
|
type: 'test'
|
|
...
|
|
# Subtest: row 165 add: two instances join, validate exits 0, the log names the human, and the writer asks for no restart (row 194, D3)
|
|
ok 137 - row 165 add: two instances join, validate exits 0, the log names the human, and the writer asks for no restart (row 194, D3)
|
|
---
|
|
duration_ms: 84.539915
|
|
type: 'test'
|
|
...
|
|
# Subtest: row 165 change: definition, vars and launch membership log before and after; none asks for a restart, the bus reloads (row 194, D3)
|
|
ok 138 - row 165 change: definition, vars and launch membership log before and after; none asks for a restart, the bus reloads (row 194, D3)
|
|
---
|
|
duration_ms: 97.885843
|
|
type: 'test'
|
|
...
|
|
# Subtest: row 165 refuses each validation failure and leaves the file's bytes alone
|
|
ok 139 - row 165 refuses each validation failure and leaves the file's bytes alone
|
|
---
|
|
duration_ms: 33.10544
|
|
type: 'test'
|
|
...
|
|
# Subtest: T19 add of a credentialed definition writes store references dated today, names its bot, and validate exits 0
|
|
ok 140 - T19 add of a credentialed definition writes store references dated today, names its bot, and validate exits 0
|
|
---
|
|
duration_ms: 83.408873
|
|
type: 'test'
|
|
...
|
|
# Subtest: T19 add of a definition that declares host writes references for its token services only
|
|
ok 141 - T19 add of a definition that declares host writes references for its token services only
|
|
---
|
|
duration_ms: 9.593552
|
|
type: 'test'
|
|
...
|
|
# Subtest: row 165 refuses a definition change to or from one that declares credentials
|
|
ok 142 - row 165 refuses a definition change to or from one that declares credentials
|
|
---
|
|
duration_ms: 6.222961
|
|
type: 'test'
|
|
...
|
|
# Subtest: row 165 a vars or launch change on an instance with its binding succeeds and keeps the binding
|
|
ok 143 - row 165 a vars or launch change on an instance with its binding succeeds and keeps the binding
|
|
---
|
|
duration_ms: 76.120813
|
|
type: 'test'
|
|
...
|
|
# Subtest: row 165 refuses an END_PROTECTED definition and every change to a protected instance
|
|
ok 144 - row 165 refuses an END_PROTECTED definition and every change to a protected instance
|
|
---
|
|
duration_ms: 8.116746
|
|
type: 'test'
|
|
...
|
|
# Subtest: row 165 refuses while a project file doesn't resolve, as validate would
|
|
ok 145 - row 165 refuses while a project file doesn't resolve, as validate would
|
|
---
|
|
duration_ms: 16.224685
|
|
type: 'test'
|
|
...
|
|
# Subtest: row 165 refuses a stale revision and leaves the file's bytes alone
|
|
ok 146 - row 165 refuses a stale revision and leaves the file's bytes alone
|
|
---
|
|
duration_ms: 9.58479
|
|
type: 'test'
|
|
...
|
|
# Subtest: row 65 an instance write refuses harness-off, thinking-unsupported, an unknown model and a partial fallback
|
|
ok 147 - row 65 an instance write refuses harness-off, thinking-unsupported, an unknown model and a partial fallback
|
|
---
|
|
duration_ms: 31.102417
|
|
type: 'test'
|
|
...
|
|
# Subtest: row 213 a creative instance is the human's: add, vars and definition changes, persona digest only
|
|
ok 148 - row 213 a creative instance is the human's: add, vars and definition changes, persona digest only
|
|
---
|
|
duration_ms: 89.195729
|
|
type: 'test'
|
|
...
|
|
# Subtest: row 256 T1-T3, T5 the human deletes a creative instance, no other actor does, and the assistant stays
|
|
ok 149 - row 256 T1-T3, T5 the human deletes a creative instance, no other actor does, and the assistant stays
|
|
---
|
|
duration_ms: 94.519253
|
|
type: 'test'
|
|
...
|
|
# Subtest: row 256 T4 the human's delete of the only listed instance, a creative one, is the last-listed refusal
|
|
ok 150 - row 256 T4 the human's delete of the only listed instance, a creative one, is the last-listed refusal
|
|
---
|
|
duration_ms: 3.184877
|
|
type: 'test'
|
|
...
|
|
# Subtest: REQ-LIMIT-1 schema: every scope unset or zero, adjustable above four, bad values and unknown models refuse
|
|
ok 151 - REQ-LIMIT-1 schema: every scope unset or zero, adjustable above four, bad values and unknown models refuse
|
|
---
|
|
duration_ms: 11.553185
|
|
type: 'test'
|
|
...
|
|
# Subtest: REQ-LIMIT-1 counts each exact scope at/over limit, unlimited and old tuple after model reassignment
|
|
ok 152 - REQ-LIMIT-1 counts each exact scope at/over limit, unlimited and old tuple after model reassignment
|
|
---
|
|
duration_ms: 0.602786
|
|
type: 'test'
|
|
...
|
|
# Subtest: REQ-ROLE-3 writer: atomic validated revision, immutable previous bytes and authenticated actor/old/new receipt
|
|
ok 153 - REQ-ROLE-3 writer: atomic validated revision, immutable previous bytes and authenticated actor/old/new receipt
|
|
---
|
|
duration_ms: 17.349824
|
|
type: 'test'
|
|
...
|
|
# Subtest: REQ-ROLE-3 writer: pre-rename fault leaves old file, post-rename recovery records commit, conflicting recovery refuses
|
|
ok 154 - REQ-ROLE-3 writer: pre-rename fault leaves old file, post-rename recovery records commit, conflicting recovery refuses
|
|
---
|
|
duration_ms: 13.592421
|
|
type: 'test'
|
|
...
|
|
# Subtest: REQ-LIMIT-1 / decision145 migration prints only, preserves values, rejects ambiguity, and is idempotent
|
|
ok 155 - REQ-LIMIT-1 / decision145 migration prints only, preserves values, rejects ambiguity, and is idempotent
|
|
---
|
|
duration_ms: 3.146302
|
|
type: 'test'
|
|
...
|
|
# Subtest: REQ-LIMIT-1 shared settings validates the complete proposed selection and logs exact actor
|
|
ok 156 - REQ-LIMIT-1 shared settings validates the complete proposed selection and logs exact actor
|
|
---
|
|
duration_ms: 19.294493
|
|
type: 'test'
|
|
...
|
|
# Subtest: REQ-LIMIT-1 provider is table data: another provider routes separately and aliases share exact counts
|
|
ok 157 - REQ-LIMIT-1 provider is table data: another provider routes separately and aliases share exact counts
|
|
---
|
|
duration_ms: 2.236108
|
|
type: 'test'
|
|
...
|
|
# Subtest: REQ-ROLE-3 refuses live writer locks, symlink targets and uncertain recovery without changing bytes
|
|
ok 158 - REQ-ROLE-3 refuses live writer locks, symlink targets and uncertain recovery without changing bytes
|
|
---
|
|
duration_ms: 9.002687
|
|
type: 'test'
|
|
...
|
|
# Subtest: Q169 assistants: vars and definition change and log the actor; tracker null leaves no tracker
|
|
ok 159 - Q169 assistants: vars and definition change and log the actor; tracker null leaves no tracker
|
|
---
|
|
duration_ms: 15.790059
|
|
type: 'test'
|
|
...
|
|
# Subtest: Q169 assistants: refuses other instances, other definitions, holder and credentials, empty entries, a tracker the definition has no credential for and a stale revision
|
|
ok 160 - Q169 assistants: refuses other instances, other definitions, holder and credentials, empty entries, a tracker the definition has no credential for and a stale revision
|
|
---
|
|
duration_ms: 17.409641
|
|
type: 'test'
|
|
...
|
|
# Subtest: Q169 assistants: a definition with a vikunja credential takes a tracker change and refuses its removal or a used bot
|
|
ok 161 - Q169 assistants: a definition with a vikunja credential takes a tracker change and refuses its removal or a used bot
|
|
---
|
|
duration_ms: 11.730195
|
|
type: 'test'
|
|
...
|
|
# Subtest: row 65 routes lists every instance with harness, model, thinking and fallback, the switched-on harnesses, the model keys and each harness's levels
|
|
ok 162 - row 65 routes lists every instance with harness, model, thinking and fallback, the switched-on harnesses, the model keys and each harness's levels
|
|
---
|
|
duration_ms: 2.189332
|
|
type: 'test'
|
|
...
|
|
# Subtest: row 65 setRoutes saves a harness, model, thinking and whole fallback, reads each back from the file, logs the actor, and a null fallback clears all three
|
|
ok 163 - row 65 setRoutes saves a harness, model, thinking and whole fallback, reads each back from the file, logs the actor, and a null fallback clears all three
|
|
---
|
|
duration_ms: 14.588568
|
|
type: 'test'
|
|
...
|
|
# Subtest: row 65 setRoutes refuses a partial fallback, a switched-off harness, a level the harness doesn't apply, an unloaded module, an unknown model or instance, a malformed route, no change and a stale revision, with the file unchanged
|
|
ok 164 - row 65 setRoutes refuses a partial fallback, a switched-off harness, a level the harness doesn't apply, an unloaded module, an unknown model or instance, a malformed route, no change and a stale revision, with the file unchanged
|
|
---
|
|
duration_ms: 19.042266
|
|
type: 'test'
|
|
...
|
|
# Subtest: row 65 a file with harness vars and no plugins.harness loads and its views read; a model change still saves, and a route change refuses harness-off
|
|
ok 165 - row 65 a file with harness vars and no plugins.harness loads and its views read; a model change still saves, and a route change refuses harness-off
|
|
---
|
|
duration_ms: 9.580858
|
|
type: 'test'
|
|
...
|
|
# Subtest: B7 kept instance: the models keys it names and the instances key are the human's
|
|
ok 166 - B7 kept instance: the models keys it names and the instances key are the human's
|
|
---
|
|
duration_ms: 23.901546
|
|
type: 'test'
|
|
...
|
|
# Subtest: B7 kept instance: its route is the human's
|
|
ok 167 - B7 kept instance: its route is the human's
|
|
---
|
|
duration_ms: 9.337811
|
|
type: 'test'
|
|
...
|
|
# Subtest: M10 creative instance: models keys it names, the instances key and its route are the human's
|
|
ok 168 - M10 creative instance: models keys it names, the instances key and its route are the human's
|
|
---
|
|
duration_ms: 31.279176
|
|
type: 'test'
|
|
...
|
|
# Subtest: C2-04 M9: changed playground and hybrid entries leave business and changes.jsonl byte-identical
|
|
ok 169 - C2-04 M9: changed playground and hybrid entries leave business and changes.jsonl byte-identical
|
|
---
|
|
duration_ms: 20.468532
|
|
type: 'test'
|
|
...
|
|
# Subtest: C2-04 M9: code projects, additions, deletions and array changes are protected too
|
|
ok 170 - C2-04 M9: code projects, additions, deletions and array changes are protected too
|
|
---
|
|
duration_ms: 16.044927
|
|
type: 'test'
|
|
...
|
|
# Subtest: C2-04 M9: canonical key order is allowed and a non-project setter still records its change
|
|
ok 171 - C2-04 M9: canonical key order is allowed and a non-project setter still records its change
|
|
---
|
|
duration_ms: 12.311204
|
|
type: 'test'
|
|
...
|
|
# Subtest: C2-04 M9: a serialization hook cannot change projects after the canonical comparison
|
|
ok 172 - C2-04 M9: a serialization hook cannot change projects after the canonical comparison
|
|
---
|
|
duration_ms: 10.590446
|
|
type: 'test'
|
|
...
|
|
# Subtest: M7/M8: library seats come from library businesses, creative seats from their creative definitions
|
|
ok 173 - M7/M8: library seats come from library businesses, creative seats from their creative definitions
|
|
---
|
|
duration_ms: 6.110258
|
|
type: 'test'
|
|
...
|
|
# Subtest: M8: a business with no library project puts no seat in either set
|
|
ok 174 - M8: a business with no library project puts no seat in either set
|
|
---
|
|
duration_ms: 1.61657
|
|
type: 'test'
|
|
...
|
|
# Subtest: M7/M8: a business file that is not valid JSON throws; no empty set
|
|
ok 175 - M7/M8: a business file that is not valid JSON throws; no empty set
|
|
---
|
|
duration_ms: 1.585379
|
|
type: 'test'
|
|
...
|
|
# Subtest: M7/M8: an absent businesses directory gives empty sets
|
|
ok 176 - M7/M8: an absent businesses directory gives empty sets
|
|
---
|
|
duration_ms: 0.306707
|
|
type: 'test'
|
|
...
|
|
# Subtest: M7/M8: a businesses path that is not a directory throws; no empty set
|
|
ok 177 - M7/M8: a businesses path that is not a directory throws; no empty set
|
|
---
|
|
duration_ms: 0.436102
|
|
type: 'test'
|
|
...
|
|
# Subtest: M7/M8: a businesses symlink to a missing target throws; no empty set
|
|
ok 178 - M7/M8: a businesses symlink to a missing target throws; no empty set
|
|
---
|
|
duration_ms: 0.660106
|
|
type: 'test'
|
|
...
|
|
# Subtest: M7/M8: a config directory under a regular file throws (lstat fails with ENOTDIR); no empty set
|
|
ok 179 - M7/M8: a config directory under a regular file throws (lstat fails with ENOTDIR); no empty set
|
|
---
|
|
duration_ms: 0.270317
|
|
type: 'test'
|
|
...
|
|
# Subtest: M7/M8: a business file that can't be read throws; no empty set
|
|
ok 180 - M7/M8: a business file that can't be read throws; no empty set
|
|
---
|
|
duration_ms: 0.766045
|
|
type: 'test'
|
|
...
|
|
# Subtest: T6 delete refuses in the design's order and leaves the file's bytes alone
|
|
ok 181 - T6 delete refuses in the design's order and leaves the file's bytes alone
|
|
---
|
|
duration_ms: 28.082152
|
|
type: 'test'
|
|
...
|
|
# Subtest: T6 delete refuses the last listed instance
|
|
ok 182 - T6 delete refuses the last listed instance
|
|
---
|
|
duration_ms: 3.120566
|
|
type: 'test'
|
|
...
|
|
# Subtest: T6 a clean delete removes the entry and its own references, adds retired, and the name can't come back
|
|
ok 183 - T6 a clean delete removes the entry and its own references, adds retired, and the name can't come back
|
|
---
|
|
duration_ms: 84.120433
|
|
type: 'test'
|
|
...
|
|
# Subtest: T7 veto: keep, unkeep, nohire and hire each write once, a repeat is no change, and the log names the human
|
|
ok 184 - T7 veto: keep, unkeep, nohire and hire each write once, a repeat is no change, and the log names the human
|
|
---
|
|
duration_ms: 116.719676
|
|
type: 'test'
|
|
...
|
|
# Subtest: T7 veto refuses an unknown or END_PROTECTED keep, a bad request, a stale revision and a business without launch
|
|
ok 185 - T7 veto refuses an unknown or END_PROTECTED keep, a bad request, a stale revision and a business without launch
|
|
---
|
|
duration_ms: 17.755461
|
|
type: 'test'
|
|
...
|
|
# Subtest: D2.2 hire adds and lists a new instance, logs the chief's context, and sets only model and limits
|
|
ok 186 - D2.2 hire adds and lists a new instance, logs the chief's context, and sets only model and limits
|
|
---
|
|
duration_ms: 79.325549
|
|
type: 'test'
|
|
...
|
|
# Subtest: D2.2 hire refuses noHire, a kept name and a listed name, and re-lists a fired one only as it was
|
|
ok 187 - D2.2 hire refuses noHire, a kept name and a listed name, and re-lists a fired one only as it was
|
|
---
|
|
duration_ms: 22.396454
|
|
type: 'test'
|
|
...
|
|
# Subtest: D2.2 fire delists and keeps the entry, a repeat is done with no write, and each refusal holds
|
|
ok 188 - D2.2 fire delists and keeps the entry, a repeat is done with no write, and each refusal holds
|
|
---
|
|
duration_ms: 80.460041
|
|
type: 'test'
|
|
...
|
|
# Subtest: row 256 checkDelete passes the human's creative delete and refuses another actor's; fire still refuses
|
|
ok 189 - row 256 checkDelete passes the human's creative delete and refuses another actor's; fire still refuses
|
|
---
|
|
duration_ms: 4.456096
|
|
type: 'test'
|
|
...
|
|
# Subtest: row 239 T1 a fire on a revision that goes stale before the writer's lock refuses there and revokes nothing
|
|
ok 190 - row 239 T1 a fire on a revision that goes stale before the writer's lock refuses there and revokes nothing
|
|
---
|
|
duration_ms: 4.550672
|
|
type: 'test'
|
|
...
|
|
# Subtest: row 239 T2 a write after the revoke refused before publication carries revoked, and the file keeps the edit
|
|
ok 191 - row 239 T2 a write after the revoke refused before publication carries revoked, and the file keeps the edit
|
|
---
|
|
duration_ms: 6.912901
|
|
type: 'test'
|
|
...
|
|
# Subtest: row 239 T3 any error after the revoke carries revoked, for a fire and a delete; a revoke that throws carries nothing
|
|
ok 192 - row 239 T3 any error after the revoke carries revoked, for a fire and a delete; a revoke that throws carries nothing
|
|
---
|
|
duration_ms: 24.238549
|
|
type: 'test'
|
|
...
|
|
# Subtest: Q247: omitting tracker loads as null and preserves independent role bots
|
|
ok 193 - Q247: omitting tracker loads as null and preserves independent role bots
|
|
---
|
|
duration_ms: 4.758964
|
|
type: 'test'
|
|
...
|
|
# Subtest: Q247: real business validate passes without a sync credential reference or file
|
|
ok 194 - Q247: real business validate passes without a sync credential reference or file
|
|
---
|
|
duration_ms: 67.504694
|
|
type: 'test'
|
|
...
|
|
# Subtest: Q247: present tracker retains its values and validation without mutating the input
|
|
ok 195 - Q247: present tracker retains its values and validation without mutating the input
|
|
---
|
|
duration_ms: 2.371401
|
|
type: 'test'
|
|
...
|
|
# Subtest: Q247: present null, undefined and malformed trackers still refuse
|
|
ok 196 - Q247: present null, undefined and malformed trackers still refuse
|
|
---
|
|
duration_ms: 3.791166
|
|
type: 'test'
|
|
...
|
|
# Subtest: Q247: absent business tracker does not waive a role's Vikunja bot requirement
|
|
ok 197 - Q247: absent business tracker does not waive a role's Vikunja bot requirement
|
|
---
|
|
duration_ms: 0.778438
|
|
type: 'test'
|
|
...
|
|
# Subtest: REQ-PLUG-1 schema: plugins is optional, names known kinds and checked module names
|
|
ok 198 - REQ-PLUG-1 schema: plugins is optional, names known kinds and checked module names
|
|
---
|
|
duration_ms: 10.154114
|
|
type: 'test'
|
|
...
|
|
# Subtest: REQ-PLUG-1 REQ-ROLE-3 the setter writes plugins through the organization writer and logs old and new names
|
|
ok 199 - REQ-PLUG-1 REQ-ROLE-3 the setter writes plugins through the organization writer and logs old and new names
|
|
---
|
|
duration_ms: 21.483093
|
|
type: 'test'
|
|
...
|
|
# Subtest: vikunja:19/309 a patch changes only the kinds it names; null removes one kind, explicitly and in the trail
|
|
ok 200 - vikunja:19/309 a patch changes only the kinds it names; null removes one kind, explicitly and in the trail
|
|
---
|
|
duration_ms: 23.329275
|
|
type: 'test'
|
|
...
|
|
# Subtest: vikunja:19/309 an unknown kind (set or removed), a bad module, an empty patch and null on the wrong shape are refused, nothing written
|
|
ok 201 - vikunja:19/309 an unknown kind (set or removed), a bad module, an empty patch and null on the wrong shape are refused, nothing written
|
|
---
|
|
duration_ms: 1.502658
|
|
type: 'test'
|
|
...
|
|
# Subtest: REQ-PLUG-1 REQ-ROLE-3 the writer checks the bytes it writes: a Date in plugins is refused there too
|
|
ok 202 - REQ-PLUG-1 REQ-ROLE-3 the writer checks the bytes it writes: a Date in plugins is refused there too
|
|
---
|
|
duration_ms: 3.909633
|
|
type: 'test'
|
|
...
|
|
# Subtest: REQ-PLUG-1 REQ-ROLE-3 a refused setter write throws a code, changes nothing and logs nothing
|
|
ok 203 - REQ-PLUG-1 REQ-ROLE-3 a refused setter write throws a code, changes nothing and logs nothing
|
|
---
|
|
duration_ms: 1.481003
|
|
type: 'test'
|
|
...
|
|
# Subtest: vikunja:19/305 with an exists check, the setter refuses a module no tree file answers to, before anything is written
|
|
ok 204 - vikunja:19/305 with an exists check, the setter refuses a module no tree file answers to, before anything is written
|
|
---
|
|
duration_ms: 7.185207
|
|
type: 'test'
|
|
...
|
|
# Subtest: optional project repo is preserved and must be a normalized absolute path
|
|
ok 205 - optional project repo is preserved and must be a normalized absolute path
|
|
---
|
|
duration_ms: 7.925327
|
|
type: 'test'
|
|
...
|
|
# Subtest: loaded business project repo cannot be nested in any declared code checkout
|
|
ok 206 - loaded business project repo cannot be nested in any declared code checkout
|
|
---
|
|
duration_ms: 1.826018
|
|
type: 'test'
|
|
...
|
|
# Subtest: path and load
|
|
ok 207 - path and load
|
|
---
|
|
duration_ms: 1.60997
|
|
type: 'test'
|
|
...
|
|
# Subtest: refusals
|
|
ok 208 - refusals
|
|
---
|
|
duration_ms: 0.831688
|
|
type: 'test'
|
|
...
|
|
# Subtest: record.write is within-role for the eleven approved v2 agents, never gated-only
|
|
ok 209 - record.write is within-role for the eleven approved v2 agents, never gated-only
|
|
---
|
|
duration_ms: 2.106983
|
|
type: 'test'
|
|
...
|
|
# Subtest: C2-04: a library first in projects does not hide a later project layer
|
|
ok 210 - C2-04: a library first in projects does not hide a later project layer
|
|
---
|
|
duration_ms: 6.316233
|
|
type: 'test'
|
|
...
|
|
# Subtest: systemVars flattens the validated config
|
|
ok 211 - systemVars flattens the validated config
|
|
---
|
|
duration_ms: 0.765698
|
|
type: 'test'
|
|
...
|
|
# Subtest: precedence: system, business, project, project role, agent
|
|
ok 212 - precedence: system, business, project, project role, agent
|
|
---
|
|
duration_ms: 1.447919
|
|
type: 'test'
|
|
...
|
|
# Subtest: limits narrow the definition and never widen it
|
|
ok 213 - limits narrow the definition and never widen it
|
|
---
|
|
duration_ms: 2.033326
|
|
type: 'test'
|
|
...
|
|
# Subtest: role.launch stays within-role only for the instance the launch block names
|
|
ok 214 - role.launch stays within-role only for the instance the launch block names
|
|
---
|
|
duration_ms: 4.301605
|
|
type: 'test'
|
|
...
|
|
# Subtest: limits.authority without role.launch leaves the launcher with no launch block
|
|
ok 215 - limits.authority without role.launch leaves the launcher with no launch block
|
|
---
|
|
duration_ms: 1.466373
|
|
type: 'test'
|
|
...
|
|
# Subtest: limits.authority narrows cross-role actions too
|
|
ok 216 - limits.authority narrows cross-role actions too
|
|
---
|
|
duration_ms: 0.803265
|
|
type: 'test'
|
|
...
|
|
# Subtest: classify
|
|
ok 217 - classify
|
|
---
|
|
duration_ms: 0.805627
|
|
type: 'test'
|
|
...
|
|
# Subtest: the record carries what the broker and launcher need
|
|
ok 218 - the record carries what the broker and launcher need
|
|
---
|
|
duration_ms: 0.683776
|
|
type: 'test'
|
|
...
|
|
# Subtest: digest: key order doesn't matter, any value change does
|
|
ok 219 - digest: key order doesn't matter, any value change does
|
|
---
|
|
duration_ms: 5.446644
|
|
type: 'test'
|
|
...
|
|
# Subtest: refusals
|
|
ok 220 - refusals
|
|
---
|
|
duration_ms: 1.63415
|
|
type: 'test'
|
|
...
|
|
# Subtest: the four shipped version 2 roles load
|
|
ok 221 - the four shipped version 2 roles load
|
|
---
|
|
duration_ms: 2.316781
|
|
type: 'test'
|
|
...
|
|
# Subtest: shipped role scopes match addendum B section 2 and the SR runbook
|
|
ok 222 - shipped role scopes match addendum B section 2 and the SR runbook
|
|
---
|
|
duration_ms: 0.853261
|
|
type: 'test'
|
|
...
|
|
# Subtest: shipped authority follows the note's table
|
|
ok 223 - shipped authority follows the note's table
|
|
---
|
|
duration_ms: 4.523762
|
|
type: 'test'
|
|
...
|
|
# Subtest: every role file in roles/ loads through the validator, and a v2 contract exists
|
|
ok 224 - every role file in roles/ loads through the validator, and a v2 contract exists
|
|
---
|
|
duration_ms: 1.180447
|
|
type: 'test'
|
|
...
|
|
# Subtest: version 1 files keep loading with no authority
|
|
ok 225 - version 1 files keep loading with no authority
|
|
---
|
|
duration_ms: 0.790958
|
|
type: 'test'
|
|
...
|
|
# Subtest: the conductor policy isn't a role
|
|
ok 226 - the conductor policy isn't a role
|
|
---
|
|
duration_ms: 0.157602
|
|
type: 'test'
|
|
...
|
|
# Subtest: a missing role file is exit 4, a symbolic link too
|
|
ok 227 - a missing role file is exit 4, a symbolic link too
|
|
---
|
|
duration_ms: 0.306589
|
|
type: 'test'
|
|
...
|
|
# Subtest: version 2 refusals
|
|
ok 228 - version 2 refusals
|
|
---
|
|
duration_ms: 0.925478
|
|
type: 'test'
|
|
...
|
|
# Subtest: authority: closed vocabulary, no gated-only action, no overlap
|
|
ok 229 - authority: closed vocabulary, no gated-only action, no overlap
|
|
---
|
|
duration_ms: 1.385254
|
|
type: 'test'
|
|
...
|
|
# Subtest: messaging: optional, role definitions and human, never the tester
|
|
ok 230 - messaging: optional, role definitions and human, never the tester
|
|
---
|
|
duration_ms: 0.964617
|
|
type: 'test'
|
|
...
|
|
# Subtest: row 64 skills: optional, distinct skill directory names, none on version 1
|
|
ok 231 - row 64 skills: optional, distinct skill directory names, none on version 1
|
|
---
|
|
duration_ms: 0.903322
|
|
type: 'test'
|
|
...
|
|
# Subtest: credentials: Gitea scopes
|
|
ok 232 - credentials: Gitea scopes
|
|
---
|
|
duration_ms: 0.523793
|
|
type: 'test'
|
|
...
|
|
# Subtest: credentials: Vikunja scopes are a group-to-verbs map from the grantable list
|
|
ok 233 - credentials: Vikunja scopes are a group-to-verbs map from the grantable list
|
|
---
|
|
duration_ms: 0.636188
|
|
type: 'test'
|
|
...
|
|
# Subtest: credentials: services
|
|
ok 234 - credentials: services
|
|
---
|
|
duration_ms: 0.345318
|
|
type: 'test'
|
|
...
|
|
# Subtest: contract: a non-empty regular Markdown file beside the role file
|
|
ok 235 - contract: a non-empty regular Markdown file beside the role file
|
|
---
|
|
duration_ms: 0.394908
|
|
type: 'test'
|
|
...
|
|
# Subtest: the six creative roles load: read tools, message.send only, messaging with the human only
|
|
ok 236 - the six creative roles load: read tools, message.send only, messaging with the human only
|
|
---
|
|
duration_ms: 0.298162
|
|
type: 'test'
|
|
...
|
|
# Subtest: M1: a creative role file wider than read and answer is refused
|
|
ok 237 - M1: a creative role file wider than read and answer is refused
|
|
---
|
|
duration_ms: 0.935512
|
|
type: 'test'
|
|
...
|
|
# Subtest: hireable: HIRE_ALLOWED is exactly the six plain work actions, and every one is routed
|
|
ok 238 - hireable: HIRE_ALLOWED is exactly the six plain work actions, and every one is routed
|
|
---
|
|
duration_ms: 0.076694
|
|
type: 'test'
|
|
...
|
|
# Subtest: hireable: a list naming a definition that holds any refused action refuses at load, one case per action
|
|
ok 239 - hireable: a list naming a definition that holds any refused action refuses at load, one case per action
|
|
---
|
|
duration_ms: 5.540931
|
|
type: 'test'
|
|
...
|
|
# Subtest: hireable: a mixed definition refuses, a clean list loads, and the named file's own hireable isn't read
|
|
ok 240 - hireable: a mixed definition refuses, a clean list loads, and the named file's own hireable isn't read
|
|
---
|
|
duration_ms: 0.48177
|
|
type: 'test'
|
|
...
|
|
# Subtest: hireable: a missing, version 1, duplicate or badly named entry refuses, and the key is optional
|
|
ok 241 - hireable: a missing, version 1, duplicate or badly named entry refuses, and the key is optional
|
|
---
|
|
duration_ms: 1.432678
|
|
type: 'test'
|
|
...
|
|
# Subtest: the pm and the cto check a saved spec against settled decisions and work in flight, and answer with a BLOCK or an accept
|
|
ok 242 - the pm and the cto check a saved spec against settled decisions and work in flight, and answer with a BLOCK or an accept
|
|
---
|
|
duration_ms: 4.475151
|
|
type: 'test'
|
|
...
|
|
# Subtest: the chief of staff relays a BLOCK or an accept to the assistant as a reply to the message that carried it
|
|
ok 243 - the chief of staff relays a BLOCK or an accept to the assistant as a reply to the message that carried it
|
|
---
|
|
duration_ms: 0.410152
|
|
type: 'test'
|
|
...
|
|
# Subtest: the assistant summarizes a spec review in its own words and doesn't repeat the chief of staff's text
|
|
ok 244 - the assistant summarizes a spec review in its own words and doesn't repeat the chief of staff's text
|
|
---
|
|
duration_ms: 0.400249
|
|
type: 'test'
|
|
...
|
|
# Subtest: REQ-LIMIT-3 schema: each subject kind, limit 0 and no ceiling are accepted; bad limits, times, keys and undeclared instances refuse
|
|
ok 245 - REQ-LIMIT-3 schema: each subject kind, limit 0 and no ceiling are accepted; bad limits, times, keys and undeclared instances refuse
|
|
---
|
|
duration_ms: 12.14993
|
|
type: 'test'
|
|
...
|
|
# Subtest: REQ-LIMIT-3 the writer stamps since: a new limit gets now, a changed one keeps its time, a different time is refused
|
|
ok 246 - REQ-LIMIT-3 the writer stamps since: a new limit gets now, a changed one keeps its time, a different time is refused
|
|
---
|
|
duration_ms: 41.552952
|
|
type: 'test'
|
|
...
|
|
# Subtest: REQ-LIMIT-3 only tokens.* at schema depth holds token limits: agent limits named `limit` save as sent, and a token limit named `limit` is stamped and reset
|
|
ok 247 - REQ-LIMIT-3 only tokens.* at schema depth holds token limits: agent limits named `limit` save as sent, and a token limit named `limit` is stamped and reset
|
|
---
|
|
duration_ms: 41.826674
|
|
type: 'test'
|
|
...
|
|
# Subtest: REQ-LIMIT-3 a reset moves since to now, is logged with its actor, and refuses a path that is not a limit
|
|
ok 248 - REQ-LIMIT-3 a reset moves since to now, is logged with its actor, and refuses a path that is not a limit
|
|
---
|
|
duration_ms: 22.302269
|
|
type: 'test'
|
|
...
|
|
# Subtest: REQ-LIMIT-2 schema: launch.account names a credential set; a daily quota needs a reset and an IANA zone and names the account
|
|
ok 249 - REQ-LIMIT-2 schema: launch.account names a credential set; a daily quota needs a reset and an IANA zone and names the account
|
|
---
|
|
duration_ms: 21.734275
|
|
type: 'test'
|
|
...
|
|
# Subtest: REQ-LIMIT-2 the writer stamps a daily quota's since, keeps its reset and zone, and a reset moves since
|
|
ok 250 - REQ-LIMIT-2 the writer stamps a daily quota's since, keeps its reset and zone, and a reset moves since
|
|
---
|
|
duration_ms: 22.999196
|
|
type: 'test'
|
|
...
|
|
# Subtest: every key names known layers and a merge rule
|
|
ok 251 - every key names known layers and a merge rule
|
|
---
|
|
duration_ms: 0.603103
|
|
type: 'test'
|
|
...
|
|
# Subtest: unknown keys and wrong layers refuse
|
|
ok 252 - unknown keys and wrong layers refuse
|
|
---
|
|
duration_ms: 0.502101
|
|
type: 'test'
|
|
...
|
|
# Subtest: types
|
|
ok 253 - types
|
|
---
|
|
duration_ms: 1.534853
|
|
type: 'test'
|
|
...
|
|
# Subtest: merge: defaults, then the most specific layer wins
|
|
ok 254 - merge: defaults, then the most specific layer wins
|
|
---
|
|
duration_ms: 0.20583
|
|
type: 'test'
|
|
...
|
|
# Subtest: merge: limits only narrow, and provenance lists each source
|
|
ok 255 - merge: limits only narrow, and provenance lists each source
|
|
---
|
|
duration_ms: 0.282146
|
|
type: 'test'
|
|
...
|
|
# Subtest: merge doesn't change its inputs
|
|
ok 256 - merge doesn't change its inputs
|
|
---
|
|
duration_ms: 0.128929
|
|
type: 'test'
|
|
...
|
|
# Subtest: web.searxng takes https anywhere and http on loopback, so Jason's 127.0.0.1:8888 passes
|
|
ok 257 - web.searxng takes https anywhere and http on loopback, so Jason's 127.0.0.1:8888 passes
|
|
---
|
|
duration_ms: 0.140057
|
|
type: 'test'
|
|
...
|
|
# Subtest: both definitions load, with a contract file, and are exactly the approved lists
|
|
ok 258 - both definitions load, with a contract file, and are exactly the approved lists
|
|
---
|
|
duration_ms: 1.929203
|
|
type: 'test'
|
|
...
|
|
# Subtest: security-reviewer has no write or shell tool and classifies only the verdict as its own
|
|
ok 259 - security-reviewer has no write or shell tool and classifies only the verdict as its own
|
|
---
|
|
duration_ms: 4.211967
|
|
type: 'test'
|
|
...
|
|
# Subtest: merge-gate's only grant is git.merge.protected cross-role, and it has no write tool
|
|
ok 260 - merge-gate's only grant is git.merge.protected cross-role, and it has no write tool
|
|
---
|
|
duration_ms: 1.478053
|
|
type: 'test'
|
|
...
|
|
# Subtest: neither role can be an arbiter: its messaging lists refuse the business file (row 133)
|
|
ok 261 - neither role can be an arbiter: its messaging lists refuse the business file (row 133)
|
|
---
|
|
duration_ms: 3.88791
|
|
type: 'test'
|
|
...
|
|
# Subtest: every role contract carries the proactive line in its Authority section
|
|
ok 262 - every role contract carries the proactive line in its Authority section
|
|
---
|
|
duration_ms: 0.519574
|
|
type: 'test'
|
|
...
|
|
# Subtest: pm and chief-of-staff say where a raise goes under REQ-DEC-2
|
|
ok 263 - pm and chief-of-staff say where a raise goes under REQ-DEC-2
|
|
---
|
|
duration_ms: 0.468314
|
|
type: 'test'
|
|
...
|
|
# Subtest: the merge landing takes two runs: merge-gate, cto and chief-of-staff each say their part
|
|
ok 264 - the merge landing takes two runs: merge-gate, cto and chief-of-staff each say their part
|
|
---
|
|
duration_ms: 0.384537
|
|
type: 'test'
|
|
...
|
|
1..264
|
|
# tests 264
|
|
# suites 0
|
|
# pass 264
|
|
# fail 0
|
|
# cancelled 0
|
|
# skipped 0
|
|
# todo 0
|
|
# duration_ms 6478.924028
|