@starci/hfs 4.0.10 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1 -1
- package/emit/operations.mjs +1 -1
- package/emit/type-schema.mjs +2 -1
- package/lint/run.mjs +3 -2
- package/package.json +1 -1
- package/report/order.mjs +2 -0
- package/runtime/config.example.yaml +187 -0
- package/runtime/engine/by-code-unit.mjs +12 -0
- package/runtime/engine/config.mjs +221 -239
- package/runtime/engine/invalid-config.mjs +5 -5
- package/runtime/engine/model-config.mjs +90 -0
- package/runtime/engine/orca-config.mjs +3 -1
- package/runtime/engine/removed-vocabulary.mjs +28 -0
- package/runtime/engine/resources-config.mjs +52 -0
- package/runtime/engine/runtime-root.mjs +17 -0
- package/runtime/engine/secrets.mjs +35 -31
- package/runtime/engine/sonar-config.mjs +21 -0
- package/runtime/engine/temp-root.mjs +32 -0
- package/runtime/knowledge/hfs/canon-pins.yaml +14 -14
- package/runtime/knowledge/hfs/peer-integrations.yaml +2 -3
- package/runtime/knowledge/hfs/rules.yaml +98 -65
- package/runtime/knowledge/hfs/slots.yaml +11 -14
- package/runtime/knowledge/patterns/be/api.yaml +7 -24
- package/runtime/knowledge/patterns/be/cli.yaml +3 -12
- package/runtime/knowledge/patterns/be/realtime.yaml +1 -14
- package/runtime/knowledge/patterns/be/webhooks.yaml +0 -19
- package/runtime/modules/kernel/failure-codes.yaml +1 -41
- package/runtime/modules/kernel/removed-vocabulary.yaml +168 -0
- package/runtime/modules/models/registry.yaml +25 -359
- package/runtime/modules/models/runtimes.yaml +92 -256
- package/runtime/modules/models/tiers.yaml +65 -0
- package/runtime/scripts/api/fs/claim-file.mjs +30 -0
- package/runtime/scripts/api/fs/ensure-temp-root.mjs +27 -0
- package/runtime/scripts/api/fs/forbidden-root.mjs +2 -1
- package/runtime/scripts/api/fs/make-temp-dir.mjs +11 -0
- package/runtime/scripts/api/fs/safe-remove.mjs +52 -35
- package/runtime/scripts/api/git/lib.mjs +34 -1
- package/runtime/scripts/api/process/resolve-real-tool.mjs +14 -8
- package/runtime/scripts/api/process/run-program.mjs +2 -1
- package/runtime/scripts/api/sops/lib.mjs +198 -120
- package/runtime/scripts/hfs/allows.mjs +3 -3
- package/runtime/scripts/hfs/architecture/ast-walks.mjs +63 -50
- package/runtime/scripts/hfs/architecture/automatic-gates.mjs +96 -0
- package/runtime/scripts/hfs/architecture/backend.mjs +261 -175
- package/runtime/scripts/hfs/architecture/background-unowned.mjs +69 -34
- package/runtime/scripts/hfs/architecture/client-reaches-server.mjs +55 -54
- package/runtime/scripts/hfs/architecture/clones.mjs +179 -106
- package/runtime/scripts/hfs/architecture/config-unread.mjs +5 -22
- package/runtime/scripts/hfs/architecture/config.mjs +95 -80
- package/runtime/scripts/hfs/architecture/connection-map.mjs +233 -141
- package/runtime/scripts/hfs/architecture/constructor-deps.mjs +15 -9
- package/runtime/scripts/hfs/architecture/context-coupling.mjs +76 -52
- package/runtime/scripts/hfs/architecture/context-map.mjs +215 -141
- package/runtime/scripts/hfs/architecture/context-owner.mjs +39 -30
- package/runtime/scripts/hfs/architecture/context-platform-tables.mjs +31 -17
- package/runtime/scripts/hfs/architecture/context-transaction.mjs +38 -25
- package/runtime/scripts/hfs/architecture/contract-fixture-guard.mjs +86 -40
- package/runtime/scripts/hfs/architecture/contracts-readonly.mjs +342 -0
- package/runtime/scripts/hfs/architecture/contracts.mjs +263 -455
- package/runtime/scripts/hfs/architecture/cross-app-duplicate.mjs +43 -34
- package/runtime/scripts/hfs/architecture/dead-exports.mjs +201 -154
- package/runtime/scripts/hfs/architecture/default-deny.mjs +118 -93
- package/runtime/scripts/hfs/architecture/doc-language.mjs +2 -1
- package/runtime/scripts/hfs/architecture/entrypoint.mjs +45 -30
- package/runtime/scripts/hfs/architecture/error-codes.mjs +19 -12
- package/runtime/scripts/hfs/architecture/error-masked.mjs +39 -26
- package/runtime/scripts/hfs/architecture/fe-slot-allows.mjs +2 -1
- package/runtime/scripts/hfs/architecture/feature-shape.mjs +26 -20
- package/runtime/scripts/hfs/architecture/framework-pinned.mjs +1 -1
- package/runtime/scripts/hfs/architecture/frontend-grammar.mjs +190 -0
- package/runtime/scripts/hfs/architecture/frontend-routing.mjs +186 -0
- package/runtime/scripts/hfs/architecture/frontend-world-render.mjs +311 -0
- package/runtime/scripts/hfs/architecture/frontend-world.mjs +328 -0
- package/runtime/scripts/hfs/architecture/frontend.mjs +109 -829
- package/runtime/scripts/hfs/architecture/hfs-graph.mjs +14 -2
- package/runtime/scripts/hfs/architecture/hfs.mjs +120 -288
- package/runtime/scripts/hfs/architecture/hooks-are-hooks.mjs +46 -26
- package/runtime/scripts/hfs/architecture/i18n-keys.mjs +114 -76
- package/runtime/scripts/hfs/architecture/index.mjs +158 -102
- package/runtime/scripts/hfs/architecture/injection-token-exported.mjs +33 -28
- package/runtime/scripts/hfs/architecture/machine-ast.mjs +180 -144
- package/runtime/scripts/hfs/architecture/managed-scripts.mjs +8 -2
- package/runtime/scripts/hfs/architecture/module-per-transport.mjs +150 -101
- package/runtime/scripts/hfs/architecture/next-data-contract.mjs +51 -43
- package/runtime/scripts/hfs/architecture/next-data-key.mjs +338 -0
- package/runtime/scripts/hfs/architecture/next-data.mjs +179 -427
- package/runtime/scripts/hfs/architecture/owners.mjs +27 -13
- package/runtime/scripts/hfs/architecture/package-shape.mjs +51 -23
- package/runtime/scripts/hfs/architecture/presentation.mjs +165 -0
- package/runtime/scripts/hfs/architecture/reachability.mjs +127 -61
- package/runtime/scripts/hfs/architecture/register-once.mjs +112 -63
- package/runtime/scripts/hfs/architecture/registration.mjs +187 -110
- package/runtime/scripts/hfs/architecture/required-files.mjs +100 -68
- package/runtime/scripts/hfs/architecture/route-files-thin.mjs +83 -58
- package/runtime/scripts/hfs/architecture/schema-owner.mjs +182 -108
- package/runtime/scripts/hfs/architecture/source-names-shape.mjs +318 -0
- package/runtime/scripts/hfs/architecture/source-names.mjs +83 -248
- package/runtime/scripts/hfs/architecture/sql-owner.mjs +175 -118
- package/runtime/scripts/hfs/architecture/sql-returning.mjs +39 -28
- package/runtime/scripts/hfs/architecture/sql-tokens.mjs +302 -172
- package/runtime/scripts/hfs/architecture/supabase-ast.mjs +1 -1
- package/runtime/scripts/hfs/architecture/supabase-be.mjs +55 -45
- package/runtime/scripts/hfs/architecture/supabase-results.mjs +182 -0
- package/runtime/scripts/hfs/architecture/supabase-tables.mjs +20 -12
- package/runtime/scripts/hfs/architecture/supabase.mjs +191 -263
- package/runtime/scripts/hfs/architecture/symbols.mjs +175 -99
- package/runtime/scripts/hfs/architecture/test-world-files.mjs +82 -41
- package/runtime/scripts/hfs/architecture/tiers.mjs +120 -69
- package/runtime/scripts/hfs/architecture/transport-owner.mjs +84 -57
- package/runtime/scripts/hfs/architecture/type-context.mjs +282 -0
- package/runtime/scripts/hfs/architecture/typescript.mjs +116 -276
- package/runtime/scripts/hfs/architecture/unit-spec-providers.mjs +84 -62
- package/runtime/scripts/hfs/architecture.mjs +3 -4
- package/runtime/scripts/hfs/check.mjs +61 -70
- package/runtime/scripts/hfs/coverage-scope.mjs +84 -38
- package/runtime/scripts/hfs/declaration-shape.mjs +77 -36
- package/runtime/scripts/hfs/declaration-slots.mjs +1 -1
- package/runtime/scripts/hfs/edition-slots.mjs +5 -3
- package/runtime/scripts/hfs/linear-text.mjs +30 -0
- package/runtime/scripts/hfs/manifest-shape.mjs +164 -63
- package/runtime/scripts/hfs/path-findings.mjs +58 -38
- package/runtime/scripts/hfs/pin-findings.mjs +31 -0
- package/runtime/scripts/hfs/repo-identity.mjs +5 -2
- package/runtime/scripts/hfs/rule-catalog.mjs +194 -0
- package/runtime/scripts/hfs/rule-params-shape.mjs +33 -27
- package/runtime/scripts/hfs/rules/cli.mjs +5 -1
- package/runtime/scripts/hfs/rules/contract-compat.mjs +40 -22
- package/runtime/scripts/hfs/rules/contract.mjs +35 -27
- package/runtime/scripts/hfs/rules/database-config.mjs +57 -32
- package/runtime/scripts/hfs/rules/database-migrations.mjs +52 -31
- package/runtime/scripts/hfs/rules/database-plpgsql.mjs +106 -91
- package/runtime/scripts/hfs/rules/database-sql.mjs +254 -173
- package/runtime/scripts/hfs/rules/database.mjs +36 -23
- package/runtime/scripts/hfs/rules/deps.mjs +64 -32
- package/runtime/scripts/hfs/rules/docker.mjs +113 -65
- package/runtime/scripts/hfs/rules/edition.mjs +118 -111
- package/runtime/scripts/hfs/rules/event-bus.mjs +91 -45
- package/runtime/scripts/hfs/rules/fe-contract-documents.mjs +17 -16
- package/runtime/scripts/hfs/rules/fe-no-tests.mjs +36 -16
- package/runtime/scripts/hfs/rules/frontend-tree.mjs +4 -3
- package/runtime/scripts/hfs/rules/integration-specs.mjs +75 -41
- package/runtime/scripts/hfs/rules/kinds.mjs +59 -25
- package/runtime/scripts/hfs/rules/lint-suppression.mjs +9 -3
- package/runtime/scripts/hfs/rules/monorepo.mjs +82 -45
- package/runtime/scripts/hfs/rules/peer-integrations.mjs +24 -3
- package/runtime/scripts/hfs/rules/pipeline.mjs +58 -9
- package/runtime/scripts/hfs/rules/proof-commands.mjs +14 -8
- package/runtime/scripts/hfs/rules/repo-local-checks.mjs +11 -6
- package/runtime/scripts/hfs/rules/saga.mjs +128 -61
- package/runtime/scripts/hfs/rules/secrets.mjs +4 -3
- package/runtime/scripts/hfs/rules/services.mjs +34 -16
- package/runtime/scripts/hfs/rules/stacks.mjs +21 -14
- package/runtime/scripts/hfs/rules/supabase-secrets.mjs +32 -23
- package/runtime/scripts/hfs/rules/test-topology.mjs +25 -11
- package/runtime/scripts/hfs/secret.mjs +59 -48
- package/runtime/scripts/hfs/slot-app-view.mjs +102 -0
- package/runtime/scripts/hfs/slot-classify.mjs +65 -0
- package/runtime/scripts/hfs/slot-errors.mjs +11 -0
- package/runtime/scripts/hfs/slot-imports.mjs +76 -0
- package/runtime/scripts/hfs/slot-manifest-shape.mjs +73 -0
- package/runtime/scripts/hfs/slot-match.mjs +153 -0
- package/runtime/scripts/hfs/slot-path.mjs +8 -0
- package/runtime/scripts/hfs/slot-required.mjs +76 -0
- package/runtime/scripts/hfs/slot-semantic-problems.mjs +148 -0
- package/runtime/scripts/hfs/slot-side-problems.mjs +28 -0
- package/runtime/scripts/hfs/slots.mjs +72 -693
- package/runtime/scripts/hfs/sql/pg-parse.mjs +5 -2
- package/runtime/scripts/hfs/trailing-slashes.mjs +8 -0
- package/runtime/scripts/hfs/tree.mjs +19 -14
- package/runtime/scripts/hfs/typescript-programs.mjs +6 -4
- package/runtime/scripts/hfs/view.mjs +1 -1
- package/runtime/scripts/lib/dockerfile.mjs +56 -33
- package/runtime/scripts/lib/event-contract.mjs +17 -13
- package/runtime/scripts/lib/git.mjs +2 -2
- package/runtime/scripts/lib/graphql-contract.mjs +158 -322
- package/runtime/scripts/lib/graphql-sdl.mjs +262 -0
- package/runtime/scripts/lib/i18n.mjs +3 -2
- package/runtime/scripts/lib/in-order.mjs +71 -0
- package/runtime/scripts/lib/language.mjs +3 -3
- package/runtime/scripts/lib/list.mjs +8 -1
- package/runtime/scripts/lib/path-key.mjs +38 -5
- package/runtime/scripts/lib/pid-alive.mjs +7 -0
- package/runtime/scripts/lib/regex.mjs +1 -1
- package/runtime/scripts/lib/same-text.mjs +1 -1
- package/runtime/scripts/lib/secret-patterns.mjs +6 -2
- package/runtime/scripts/lib/sleep-sync.mjs +2 -2
- package/runtime/scripts/lib/sops-envelope.mjs +95 -48
- package/runtime/scripts/lib/stack-services.mjs +1 -2
- package/runtime/scripts/lib/ts-ast.mjs +9 -0
- package/runtime/scripts/lib/walk.mjs +6 -1
- package/scaffold/add-cli-lite.mjs +2 -1
- package/scaffold/add-table.mjs +2 -2
- package/scaffold/add.mjs +3 -2
- package/scaffold/app.mjs +4 -2
- package/scaffold/edition-gate.mjs +25 -25
- package/scaffold/lite-exports.mjs +2 -1
- package/scaffold/service.mjs +5 -4
- package/sync/hygiene.mjs +15 -9
- package/sync/index.mjs +7 -3
- package/templates/app/ci-workflows/github/workflows/ci.yml +4 -4
- package/templates/app/ci-workflows/github/workflows/e2e.yml +3 -3
- package/templates/app/ci-workflows/github/workflows/images.yml +3 -3
- package/templates/app/ci-workflows/sonar-steps.yml +2 -2
- package/templates/app/ci-workflows-lite/github/workflows/ci.yml +6 -6
- package/templates/app/ci-workflows-lite/github/workflows/db-deploy.yml +3 -3
- package/templates/app/ci-workflows-lite/github/workflows/images.yml +3 -3
- package/templates/app/starciwork.gitignore +1 -1
- package/templates/be/image/api/Dockerfile +1 -1
- package/templates/be/image/cli/Dockerfile +1 -1
- package/templates/be/image/worker/Dockerfile +1 -1
- package/templates/be/patterns/cli/group.cli.spec.ts.tpl +1 -1
- package/templates/be/patterns/cli/group.cli.ts.tpl +2 -2
- package/templates/be/patterns/event-bus/platform/event-runner.service.spec.ts.tpl +13 -0
- package/templates/be/patterns/event-bus/platform/event-runner.service.ts.tpl +7 -2
- package/templates/be/patterns/event-bus/platform/event.policy.ts.tpl +4 -1
- package/templates/be/patterns/event-bus/platform/kafka-event-transport.client.ts.tpl +2 -1
- package/templates/be/patterns/outbox/platform/outbox-relay.policy.ts.tpl +24 -9
- package/templates/be/patterns/queues/platform/queue-relay.service.ts.tpl +3 -2
- package/templates/be/patterns/queues/platform/queue-worker.service.ts.tpl +8 -5
- package/templates/be/skeleton/src/features/cli/migrate/migrate.cli.spec.ts +1 -1
- package/templates/be/skeleton/src/features/cli/migrate/migrate.cli.ts +2 -2
- package/templates/be/skeleton/src/features/cli/seed/seed.cli.spec.ts +1 -1
- package/templates/be/skeleton/src/features/cli/seed/seed.cli.ts +2 -2
- package/templates/be/skeleton/src/modules/platform/database/migrate-connections.client.ts +3 -2
- package/templates/be/skeleton/src/modules/platform/database/seed-connections.client.ts +5 -4
- package/templates/be/skeleton/src/modules/platform/primitives/index.ts +1 -0
- package/templates/be/skeleton/src/modules/platform/primitives/sequence.policy.spec.ts +47 -0
- package/templates/be/skeleton/src/modules/platform/primitives/sequence.policy.ts +16 -0
- package/templates/be/skeleton-lite/apps/api/Dockerfile +1 -0
- package/templates/be/skeleton-lite/src/modules/platform/primitives/index.ts +2 -0
- package/templates/fe/image/next/Dockerfile +2 -1
- package/templates/fe/skeleton/apps/app/src/app/[locale]/page.tsx +2 -2
- package/templates/fe/skeleton/apps/landing/src/app/[locale]/page.tsx +2 -2
- package/templates/fe/skeleton/packages/__project__-i18n/src/index.ts +1 -2
- package/templates/fe/skeleton-lite/apps/web/src/app/[locale]/layout.tsx +1 -2
- package/templates/fe/skeleton-lite/apps/web/src/app/[locale]/page.tsx +2 -2
- package/templates/fe/skeleton-lite/apps/web/src/components/blocks/SignInForm/index.tsx +7 -1
- package/templates/fe/skeleton-lite/apps/web/src/modules/db/auth/write-sign-out.ts +1 -1
- package/templates/fe/skeleton-lite/apps/web/src/modules/db/validation/validation.mapper.ts +10 -2
- package/templates/fe/skeleton-lite/apps/web/src/modules/i18n/request.ts +10 -3
- package/upgrade/index.mjs +9 -2
- package/runtime/engine/admission.mjs +0 -308
- package/runtime/engine/canonical-json.mjs +0 -10
- package/runtime/engine/db/blob.mjs +0 -315
- package/runtime/engine/db/ledger-paths.mjs +0 -83
- package/runtime/engine/db/ledger.mjs +0 -1118
- package/runtime/engine/db/machine-connection.mjs +0 -135
- package/runtime/engine/db/machine-schema.mjs +0 -84
- package/runtime/engine/db/machine.mjs +0 -1367
- package/runtime/engine/db/migrations/machine/0001-init.sql +0 -924
- package/runtime/engine/db/migrations/runtime/0001-init.sql +0 -1108
- package/runtime/engine/db/provider-reservations.mjs +0 -101
- package/runtime/engine/digest.mjs +0 -16
- package/runtime/engine/refuse.mjs +0 -11
- package/runtime/modules/ops/_labels.yaml +0 -53
- package/runtime/scripts/api/node/lib.mjs +0 -14
- package/runtime/scripts/api/node/spawn-node.mjs +0 -6
- package/runtime/scripts/api/process/lib.mjs +0 -111
- package/runtime/scripts/api/process/owned-process.mjs +0 -78
- package/runtime/scripts/api/process/stop-owned-process.mjs +0 -9
- package/runtime/scripts/connectors/lib.mjs +0 -488
- package/runtime/scripts/lib/clip.mjs +0 -19
- package/runtime/scripts/lib/display-names.mjs +0 -259
- package/runtime/scripts/lib/example-refs.mjs +0 -158
- package/runtime/scripts/lib/json-schema.mjs +0 -52
- package/runtime/scripts/lib/process-identity.mjs +0 -6
- package/runtime/scripts/lib/read-yaml.mjs +0 -18
- package/runtime/scripts/lib/redact.mjs +0 -161
- package/runtime/scripts/lib/sleep.mjs +0 -7
- package/runtime/scripts/lib/source-phrases.mjs +0 -34
- package/runtime/scripts/lib/sqlite.mjs +0 -21
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
# Every spelling the runtime refuses by name, each with what replaced it. engine/removed-vocabulary.mjs reads this file:
|
|
2
|
+
# the config and routing-bias refusals take their names and replacements from it, and the `removed-vocabulary` self-check
|
|
3
|
+
# refuses any of these spellings in text an agent or the owner reads, outside this file, CHANGELOG.md and a block marked
|
|
4
|
+
# `[removed-list]` (CONTRIBUTING.md, "Removing or renaming a spelling").
|
|
5
|
+
# Fields: id; kind (config-key | bias-field | verb | flag | code | vocabulary | file; a file is named by its base name); name (the removed spelling); use (the
|
|
6
|
+
# replacement, worded to finish the sentence "<name> is removed (<use>)"); since (the release that removed it);
|
|
7
|
+
# match (optional regular expression the scan uses instead of the literal name); scan (false when the name is too common
|
|
8
|
+
# a word to scan for).
|
|
9
|
+
kinds: [config-key, bias-field, verb, flag, code, vocabulary, file]
|
|
10
|
+
removed:
|
|
11
|
+
- id: bias-require
|
|
12
|
+
kind: bias-field
|
|
13
|
+
name: require
|
|
14
|
+
use: 'a requirement is now `only`, which keeps just the named members of the tier chain: write each as "<agent>", "<agent>/<model>" or a {pool, provider, model} selector, e.g. {"only":["claude"]}'
|
|
15
|
+
since: 1.0.0-alpha.6
|
|
16
|
+
match: '\brequire\s*:\s*[\[{]|"require"\s*:|\brequire bias\b|\bbias[^\n.]{0,30}`require`'
|
|
17
|
+
- id: config-models-pools
|
|
18
|
+
kind: config-key
|
|
19
|
+
name: models.pools
|
|
20
|
+
use: 'tiers are ordered member chains in modules/models/tiers.yaml; override one with models.tiers'
|
|
21
|
+
since: 1.0.0-alpha.6
|
|
22
|
+
- id: config-models-nonoperation
|
|
23
|
+
kind: config-key
|
|
24
|
+
name: models.nonOperation
|
|
25
|
+
use: 'planner, validator and kernelManager take the frontier tier (modules/models/tiers.yaml seats); remap with models.seats'
|
|
26
|
+
since: 1.0.0-alpha.6
|
|
27
|
+
- id: config-models-selection
|
|
28
|
+
kind: config-key
|
|
29
|
+
name: models.selection
|
|
30
|
+
use: 'selection is always quota-aware; there is no key'
|
|
31
|
+
since: 1.0.0-alpha.6
|
|
32
|
+
- id: config-allocation-shares
|
|
33
|
+
kind: config-key
|
|
34
|
+
name: allocation.shares
|
|
35
|
+
use: 'the picker balances by models.balance (maxStreak, maxSharePercent); there are no per-provider weights'
|
|
36
|
+
since: 1.0.0-alpha.6
|
|
37
|
+
match: 'allocation[. ]shares'
|
|
38
|
+
- id: config-allocation-windowhours
|
|
39
|
+
kind: config-key
|
|
40
|
+
name: allocation.windowHours
|
|
41
|
+
use: 'balance reads the recent picks of one tier (models.balance); there is no window'
|
|
42
|
+
since: 1.0.0-alpha.6
|
|
43
|
+
- id: config-allocation-preferredprovider
|
|
44
|
+
kind: config-key
|
|
45
|
+
name: allocation.preferredProvider
|
|
46
|
+
use: 'an owner preference is a goal routing bias (prefer <agent>)'
|
|
47
|
+
since: 1.0.0-alpha.6
|
|
48
|
+
match: 'preferredProvider'
|
|
49
|
+
- id: config-allocation-policy
|
|
50
|
+
kind: config-key
|
|
51
|
+
name: allocation.policy
|
|
52
|
+
use: 'the picker is the one policy; there is no key'
|
|
53
|
+
since: 1.0.0-alpha.6
|
|
54
|
+
- id: config-allocation-mode
|
|
55
|
+
kind: config-key
|
|
56
|
+
name: allocation.mode
|
|
57
|
+
use: 'allocation holds grants only'
|
|
58
|
+
since: 1.0.0-alpha.6
|
|
59
|
+
- id: config-kernel-group
|
|
60
|
+
kind: config-key
|
|
61
|
+
name: kernel.group
|
|
62
|
+
use: 'the Kernel takes the high tier; pin with kernel.agent / kernel.model (an `only` bias)'
|
|
63
|
+
since: 1.0.0-alpha.6
|
|
64
|
+
- id: config-supervisor-kernel-group
|
|
65
|
+
kind: config-key
|
|
66
|
+
name: supervisor.kernel.group
|
|
67
|
+
use: 'the Supervisor takes the frontier tier; pin with supervisor.kernel.agent / .model (an `only` bias)'
|
|
68
|
+
since: 1.0.0-alpha.6
|
|
69
|
+
- id: config-coredebug
|
|
70
|
+
kind: config-key
|
|
71
|
+
name: coreDebug
|
|
72
|
+
use: 'the debug watcher is a /loop of the calling chat, not a seat; the cadence and the worktree alert limit are debugLoop.interval and debugLoop.worktreeLimit'
|
|
73
|
+
since: 1.0.0-alpha.6
|
|
74
|
+
- id: config-debug
|
|
75
|
+
kind: config-key
|
|
76
|
+
name: debug
|
|
77
|
+
use: 'the debug watcher is started by the /starci skill in the calling chat; there is no switch (debugLoop.interval sets its cadence)'
|
|
78
|
+
since: 1.0.0-alpha.6
|
|
79
|
+
scan: false
|
|
80
|
+
- id: vocabulary-sol-opus
|
|
81
|
+
kind: vocabulary
|
|
82
|
+
name: sol-opus
|
|
83
|
+
use: 'a pool of two providers is a tier chain of members (modules/models/tiers.yaml)'
|
|
84
|
+
since: 1.0.0-alpha.6
|
|
85
|
+
- id: seat-core-debug
|
|
86
|
+
kind: vocabulary
|
|
87
|
+
name: core-debug seat
|
|
88
|
+
use: 'the debug watcher is a /loop of the calling chat running `starci debug digest`'
|
|
89
|
+
since: 1.0.0-alpha.6
|
|
90
|
+
match: '\bcore-debug\s+(?:seat|watcher|worker|pass)\b'
|
|
91
|
+
- id: verb-debug-pass
|
|
92
|
+
kind: verb
|
|
93
|
+
name: debug pass
|
|
94
|
+
use: '`starci debug digest` (read-only) and `starci debug run <probe>`'
|
|
95
|
+
since: 1.0.0-alpha.6
|
|
96
|
+
match: '(?<![\w-])debug pass\b'
|
|
97
|
+
- id: config-supervisor-landgate-push
|
|
98
|
+
kind: config-key
|
|
99
|
+
name: supervisor.landGate.push
|
|
100
|
+
use: 'a land fast-forwards local main only and never pushes; the remote main of the runtime moves once per release, through starci release cut'
|
|
101
|
+
since: 1.0.0-alpha.7
|
|
102
|
+
match: 'landGate\.push\b'
|
|
103
|
+
- id: flag-land-no-push
|
|
104
|
+
kind: flag
|
|
105
|
+
name: --no-push
|
|
106
|
+
use: 'a land never pushes, so there is nothing to leave unpushed'
|
|
107
|
+
since: 1.0.0-alpha.7
|
|
108
|
+
- id: code-landed-push-owed
|
|
109
|
+
kind: code
|
|
110
|
+
name: landed-push-owed
|
|
111
|
+
use: 'a land has no push step; the outcome is landed'
|
|
112
|
+
since: 1.0.0-alpha.7
|
|
113
|
+
- id: flag-caller-agent
|
|
114
|
+
kind: flag
|
|
115
|
+
name: --caller-agent
|
|
116
|
+
use: 'the debug digest runs in the calling chat; it takes no caller flag'
|
|
117
|
+
since: 1.0.0-alpha.6
|
|
118
|
+
- id: flag-caller-model
|
|
119
|
+
kind: flag
|
|
120
|
+
name: --caller-model
|
|
121
|
+
use: 'the debug digest runs in the calling chat; it takes no caller flag'
|
|
122
|
+
since: 1.0.0-alpha.6
|
|
123
|
+
- id: flag-caller-effort
|
|
124
|
+
kind: flag
|
|
125
|
+
name: --caller-effort
|
|
126
|
+
use: 'the debug digest runs in the calling chat; it takes no caller flag'
|
|
127
|
+
since: 1.0.0-alpha.6
|
|
128
|
+
- id: code-workflow-debug-not-ready
|
|
129
|
+
kind: code
|
|
130
|
+
name: workflow-debug-not-ready
|
|
131
|
+
use: 'there is no debug seat to be ready; the digest reads the ledger directly'
|
|
132
|
+
since: 1.0.0-alpha.6
|
|
133
|
+
- id: file-core-debug
|
|
134
|
+
kind: file
|
|
135
|
+
name: core-debug.mjs
|
|
136
|
+
use: 'the debug watcher is a /loop of the calling chat running `starci debug digest`; the core-watch probe is scripts/reconciler/core-watch.mjs'
|
|
137
|
+
since: 1.0.0-alpha.6
|
|
138
|
+
match: '(?<![\w-])core-debug\.mjs\b'
|
|
139
|
+
- id: file-debug-pass
|
|
140
|
+
kind: file
|
|
141
|
+
name: debug-pass.mjs
|
|
142
|
+
use: '`starci debug digest` (read-only)'
|
|
143
|
+
since: 1.0.0-alpha.6
|
|
144
|
+
match: '(?<![\w-])debug-pass\.mjs\b'
|
|
145
|
+
- id: file-caller-context
|
|
146
|
+
kind: file
|
|
147
|
+
name: caller-context.mjs
|
|
148
|
+
use: 'there is no declared caller context; the debug digest runs in the calling chat'
|
|
149
|
+
since: 1.0.0-alpha.6
|
|
150
|
+
match: '(?<![\w-])caller-context\b'
|
|
151
|
+
- id: file-host-maintenance
|
|
152
|
+
kind: file
|
|
153
|
+
name: host-maintenance.md
|
|
154
|
+
use: 'skills/starci/references/host-startup.md'
|
|
155
|
+
since: 1.0.0-alpha.6
|
|
156
|
+
match: '(?<![\w-])host-maintenance\b'
|
|
157
|
+
- id: file-sonar-secrets-keys
|
|
158
|
+
kind: file
|
|
159
|
+
name: KEYS.md
|
|
160
|
+
use: 'secret.env.example lists the names of the host secrets; ext/sonar/README.md describes the stack'
|
|
161
|
+
since: 1.0.0-alpha.7
|
|
162
|
+
match: '(?<![\w/.-])secrets/KEYS\.md'
|
|
163
|
+
- id: vocab-example-sonar-token-member
|
|
164
|
+
kind: vocabulary
|
|
165
|
+
name: per-example Sonar token custody
|
|
166
|
+
use: 'the examples are analysed on SonarCloud with the SONAR_TOKEN of the runtime secret.env (runtimeSecrets in their services.sonar declaration)'
|
|
167
|
+
since: 1.0.0-alpha.7
|
|
168
|
+
match: 'sonarqube-(?:lite-app|shape-slot|starci-ecommerce-app)-token'
|
|
@@ -2,8 +2,8 @@ schema: starci/profile-registry@1
|
|
|
2
2
|
purpose: >-
|
|
3
3
|
The ONE model catalog of the runtime. Concrete model ids — provider,
|
|
4
4
|
capability tier and per-token price — live under `models`; the provider
|
|
5
|
-
quota/capacity pools, their roles
|
|
6
|
-
|
|
5
|
+
quota/capacity pools, their roles and concurrency live under `pools` (which
|
|
6
|
+
model takes which work is modules/models/tiers.yaml); every launch target lives under `targets`, carrying
|
|
7
7
|
`defaultModel` where it names a single model. No other file in the repo
|
|
8
8
|
states a model id, tier, price or pool: those cite these keys.
|
|
9
9
|
|
|
@@ -54,50 +54,31 @@ models:
|
|
|
54
54
|
gpt-6-luna: {provider: codex, tier: economy, price: {input: 0.1, output: 0.5, cacheRead: 0.01, cacheWrite: 0.125, source: official}}
|
|
55
55
|
swe-2-max: {provider: devin, tier: frontier, price: {input: null, output: null, cacheRead: null, cacheWrite: null, source: unset}}
|
|
56
56
|
|
|
57
|
-
# The provider quota/capacity pools the allocator serves.
|
|
58
|
-
#
|
|
59
|
-
#
|
|
60
|
-
# launch takes when no difficulty pin applies. `maxParallel` is the only concurrency
|
|
61
|
-
# authority (registry.yaml executionModel.concurrency).
|
|
57
|
+
# The provider quota/capacity pools the allocator serves. Which model a seat or operation takes is
|
|
58
|
+
# modules/models/tiers.yaml; `defaultModel` is the model a launch takes when it names none. `maxParallel` is
|
|
59
|
+
# the only concurrency authority (registry.yaml executionModel.concurrency).
|
|
62
60
|
pools:
|
|
63
|
-
# One Codex account window carries
|
|
64
|
-
#
|
|
65
|
-
# capacity, never qualification or effect authority.
|
|
61
|
+
# One Codex account window carries every Codex model. Role, tool and quality gates still apply on top of tier
|
|
62
|
+
# membership; an owner allocation changes capacity, never qualification or effect authority.
|
|
66
63
|
codex-agent:
|
|
67
64
|
target: codex-agent
|
|
68
65
|
provider: codex
|
|
69
66
|
roles: [implement, verify, write, decide, plan]
|
|
70
67
|
maxParallel: 10
|
|
71
68
|
defaultModel: gpt-6-luna
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
medium: gpt-6-luna
|
|
75
|
-
hard: gpt-6.1-sol
|
|
76
|
-
insane: gpt-6.1-sol
|
|
77
|
-
effort:
|
|
78
|
-
easy: low
|
|
79
|
-
medium: medium
|
|
80
|
-
hard: high
|
|
81
|
-
insane: max
|
|
82
|
-
# One Claude session/week window, all five roles on the same pinned model at every difficulty. The Claude
|
|
83
|
-
# CLI lists no models, so the dispatch's model attestation is what proves the claude-opus-5-5 id.
|
|
69
|
+
# One Claude session/week window, all five roles. The Claude CLI lists no models, so the dispatch's model
|
|
70
|
+
# attestation is what proves the model id a tier member names.
|
|
84
71
|
claude-agent:
|
|
85
72
|
target: claude-agent
|
|
86
73
|
provider: claude
|
|
87
74
|
roles: [implement, verify, write, decide, plan]
|
|
88
75
|
maxParallel: 6
|
|
89
76
|
defaultModel: claude-opus-5-5
|
|
90
|
-
models:
|
|
91
|
-
easy: claude-opus-5-5
|
|
92
|
-
medium: claude-opus-5-5
|
|
93
|
-
hard: claude-opus-5-5
|
|
94
|
-
insane: claude-opus-5-5
|
|
95
77
|
# Devin has no machine-readable account headroom equivalent to Orca's provider windows. Owner-assigned
|
|
96
78
|
# capacity: 10 parallel lanes, opened by the owner's default grant (config.yaml allocation.grants
|
|
97
79
|
# devin-agent=10@implement+verify+write applies to every workflow; once config.yaml declares a grants list,
|
|
98
80
|
# `starci kernel route` rejects a grant-gated pool that list does not open). The CLI's auth/readiness and observed
|
|
99
|
-
# launch/refusal status are the live capacity signal on top of this cap.
|
|
100
|
-
# easy or insane pin, and the easy tier does not list the pool.
|
|
81
|
+
# launch/refusal status are the live capacity signal on top of this cap.
|
|
101
82
|
devin-agent:
|
|
102
83
|
target: devin-agent
|
|
103
84
|
provider: devin
|
|
@@ -106,9 +87,6 @@ pools:
|
|
|
106
87
|
capacityAuthority: explicit-workflow-quota
|
|
107
88
|
quotaTelemetry: launch-status
|
|
108
89
|
defaultModel: swe-2-max
|
|
109
|
-
models:
|
|
110
|
-
medium: swe-2-max
|
|
111
|
-
hard: swe-2-max
|
|
112
90
|
|
|
113
91
|
runtimes:
|
|
114
92
|
- codex
|
|
@@ -182,291 +160,6 @@ targets:
|
|
|
182
160
|
runtime: devin
|
|
183
161
|
executionHosts: [orca]
|
|
184
162
|
orcaLaunch: {agent: devin} # orca orchestration worker-start --agent devin
|
|
185
|
-
# An operator whose kind runtimes.yaml roleOfKind marks think work with no declared order carries the
|
|
186
|
-
# think order of runtimes.yaml allocation.preference.think (Opus, then Sol) and nothing else;
|
|
187
|
-
# scripts/route/route-model.mjs refuses any other pool for it. A kind's declared order wins: owner routing
|
|
188
|
-
# 2026-09-26 gives the ui order (Codex, then Devin) to interface.audit, e2e.verify,
|
|
189
|
-
# security.verify and uat.assisted.verify, the implement order (Devin, Codex, Opus) to the
|
|
190
|
-
# mechanical ops provision.ask, workspace.manage, task.execute and knowledge.repair, and sol-think (Sol,
|
|
191
|
-
# Opus overflow) to the kernel's own model calls, which carry no operator entry. Owner decision 2026-09-25
|
|
192
|
-
# (72h scripts/agent/model-scorecard.mjs evidence):
|
|
193
|
-
# hands-on implementation chains lead with Devin; scaffold, docs, content and grammar chains (the
|
|
194
|
-
# roleOfKind order scaffold) lead with Devin; the image-tool chains are Codex alone.
|
|
195
|
-
operators:
|
|
196
|
-
architecture.decide:
|
|
197
|
-
skill: starci
|
|
198
|
-
chain: [claude-agent, codex-agent]
|
|
199
|
-
environments:
|
|
200
|
-
- {environment: claude, profiles: [claude-agent]}
|
|
201
|
-
- {environment: codex, profiles: [codex-agent]}
|
|
202
|
-
backend.implement:
|
|
203
|
-
skill: starci
|
|
204
|
-
chain: [devin-agent, codex-agent, claude-agent]
|
|
205
|
-
environments:
|
|
206
|
-
- {environment: devin, profiles: [devin-agent]}
|
|
207
|
-
- {environment: codex, profiles: [codex-agent]}
|
|
208
|
-
- {environment: claude, profiles: [claude-agent]}
|
|
209
|
-
brand.decide:
|
|
210
|
-
skill: starci
|
|
211
|
-
# Owner ruling 2026-09-27 (draw-devin-brand-claude): Claude decides the brand and its direction (runtimes.yaml
|
|
212
|
-
# order brand), Codex is the fallback. A decide operation that also produces bytes: when the product has no
|
|
213
|
-
# mascot, the Codex runtime, the only one carrying the image model ($imagegen), generates one placeholder;
|
|
214
|
-
# Claude decides the identity and defers that artwork with a brief.
|
|
215
|
-
chain: [claude-agent, codex-agent]
|
|
216
|
-
environments:
|
|
217
|
-
- {environment: claude, profiles: [claude-agent]}
|
|
218
|
-
- {environment: codex, profiles: [codex-agent]}
|
|
219
|
-
decision.prepare:
|
|
220
|
-
skill: starci
|
|
221
|
-
chain: [claude-agent, codex-agent]
|
|
222
|
-
environments:
|
|
223
|
-
- {environment: claude, profiles: [claude-agent]}
|
|
224
|
-
- {environment: codex, profiles: [codex-agent]}
|
|
225
|
-
docs.author:
|
|
226
|
-
skill: starci
|
|
227
|
-
# Authoring reference docs is write-role work over the record tree: the full writing chain.
|
|
228
|
-
chain: [devin-agent, codex-agent, claude-agent]
|
|
229
|
-
environments:
|
|
230
|
-
- {environment: devin, profiles: [devin-agent]}
|
|
231
|
-
- {environment: codex, profiles: [codex-agent]}
|
|
232
|
-
- {environment: claude, profiles: [claude-agent]}
|
|
233
|
-
provision.ask:
|
|
234
|
-
skill: starci
|
|
235
|
-
# Asking for a provision is naming it exactly and waiting: a mechanical op the hands take — the
|
|
236
|
-
# implement order (owner routing 2026-09-26).
|
|
237
|
-
chain: [devin-agent, codex-agent, claude-agent]
|
|
238
|
-
environments:
|
|
239
|
-
- {environment: devin, profiles: [devin-agent]}
|
|
240
|
-
- {environment: codex, profiles: [codex-agent]}
|
|
241
|
-
- {environment: claude, profiles: [claude-agent]}
|
|
242
|
-
business.decide:
|
|
243
|
-
skill: starci
|
|
244
|
-
chain: [claude-agent, codex-agent]
|
|
245
|
-
environments:
|
|
246
|
-
- {environment: claude, profiles: [claude-agent]}
|
|
247
|
-
- {environment: codex, profiles: [codex-agent]}
|
|
248
|
-
content.generate:
|
|
249
|
-
skill: starci
|
|
250
|
-
chain: [devin-agent, codex-agent, claude-agent]
|
|
251
|
-
environments:
|
|
252
|
-
- {environment: devin, profiles: [devin-agent]}
|
|
253
|
-
- {environment: codex, profiles: [codex-agent]}
|
|
254
|
-
- {environment: claude, profiles: [claude-agent]}
|
|
255
|
-
code.refactor:
|
|
256
|
-
skill: starci
|
|
257
|
-
# Restructuring code under a behaviour invariant is implementation work: the full coding chain.
|
|
258
|
-
chain: [devin-agent, codex-agent, claude-agent]
|
|
259
|
-
environments:
|
|
260
|
-
- {environment: devin, profiles: [devin-agent]}
|
|
261
|
-
- {environment: codex, profiles: [codex-agent]}
|
|
262
|
-
- {environment: claude, profiles: [claude-agent]}
|
|
263
|
-
e2e.verify:
|
|
264
|
-
skill: starci
|
|
265
|
-
# End-to-end proof is UI verification: the ui order, Sol first with the hands as fallback
|
|
266
|
-
# (owner routing 2026-09-26).
|
|
267
|
-
chain: [codex-agent, devin-agent]
|
|
268
|
-
environments:
|
|
269
|
-
- {environment: codex, profiles: [codex-agent]}
|
|
270
|
-
- {environment: devin, profiles: [devin-agent]}
|
|
271
|
-
integration.verify:
|
|
272
|
-
skill: starci
|
|
273
|
-
# A live call to a real provider is the same kind of work as the API proof: run code, read the response
|
|
274
|
-
# back, keep the output. Its hard floor starts the chain at Devin.
|
|
275
|
-
chain: [devin-agent, claude-agent, codex-agent]
|
|
276
|
-
environments:
|
|
277
|
-
- {environment: devin, profiles: [devin-agent]}
|
|
278
|
-
- {environment: claude, profiles: [claude-agent]}
|
|
279
|
-
- {environment: codex, profiles: [codex-agent]}
|
|
280
|
-
grammar.update:
|
|
281
|
-
skill: starci
|
|
282
|
-
# Growing the installed grammar is code, stories, tests, a published version and a canon entry: hands-on
|
|
283
|
-
# work at a hard floor on the scaffold order, Devin first (owner decision 2026-09-25).
|
|
284
|
-
chain: [devin-agent, codex-agent, claude-agent]
|
|
285
|
-
environments:
|
|
286
|
-
- {environment: devin, profiles: [devin-agent]}
|
|
287
|
-
- {environment: codex, profiles: [codex-agent]}
|
|
288
|
-
- {environment: claude, profiles: [claude-agent]}
|
|
289
|
-
goal.revise:
|
|
290
|
-
skill: starci
|
|
291
|
-
# Revising a live goal is a decision about the work, not work on it: the reasoning chain.
|
|
292
|
-
chain: [claude-agent, codex-agent]
|
|
293
|
-
environments:
|
|
294
|
-
- {environment: claude, profiles: [claude-agent]}
|
|
295
|
-
- {environment: codex, profiles: [codex-agent]}
|
|
296
|
-
interface.asset:
|
|
297
|
-
skill: starci
|
|
298
|
-
# Generating the artwork a candidate embeds needs the same image model the drawing used, so the chain is
|
|
299
|
-
# the same single Codex link: a runtime that cannot render an image cannot carry this operation at all.
|
|
300
|
-
chain: [codex-agent]
|
|
301
|
-
environments:
|
|
302
|
-
- {environment: codex, profiles: [codex-agent]}
|
|
303
|
-
interface.draw:
|
|
304
|
-
skill: starci
|
|
305
|
-
# Owner ruling 2026-09-27 (draw-devin-brand-claude): Devin draws - token-render HTML/CSS in the Grammar's tokens
|
|
306
|
-
# captured by Playwright in the product checkout (its card carries browser-dom) - and Codex (Sol) is the fallback.
|
|
307
|
-
# No drawer paints raster art: a raster region is an artworkSlot interface.asset generates on Codex's image tool.
|
|
308
|
-
chain: [devin-agent, codex-agent]
|
|
309
|
-
environments:
|
|
310
|
-
- {environment: devin, profiles: [devin-agent]}
|
|
311
|
-
- {environment: codex, profiles: [codex-agent]}
|
|
312
|
-
interface.implement:
|
|
313
|
-
skill: starci
|
|
314
|
-
chain: [devin-agent, codex-agent, claude-agent]
|
|
315
|
-
environments:
|
|
316
|
-
- {environment: devin, profiles: [devin-agent]}
|
|
317
|
-
- {environment: codex, profiles: [codex-agent]}
|
|
318
|
-
- {environment: claude, profiles: [claude-agent]}
|
|
319
|
-
interface.audit:
|
|
320
|
-
skill: starci
|
|
321
|
-
# Visual/Grammar conformance is an independent verdict about quality: the ui order, Sol first
|
|
322
|
-
# (owner routing 2026-09-26). Its browser-dom host tool (route.riskHints) admits only a pool
|
|
323
|
-
# whose agent card lists it (capabilities.hostTools): Devin and Codex; Claude is passed over.
|
|
324
|
-
chain: [codex-agent, devin-agent]
|
|
325
|
-
environments:
|
|
326
|
-
- {environment: codex, profiles: [codex-agent]}
|
|
327
|
-
- {environment: devin, profiles: [devin-agent]}
|
|
328
|
-
knowledge.repair:
|
|
329
|
-
skill: starci
|
|
330
|
-
# Repairing a canonical rule file is a mechanical op: the implement order (owner routing 2026-09-26).
|
|
331
|
-
chain: [devin-agent, codex-agent, claude-agent]
|
|
332
|
-
environments:
|
|
333
|
-
- {environment: devin, profiles: [devin-agent]}
|
|
334
|
-
- {environment: codex, profiles: [codex-agent]}
|
|
335
|
-
- {environment: claude, profiles: [claude-agent]}
|
|
336
|
-
unit.verify:
|
|
337
|
-
skill: starci
|
|
338
|
-
# Running the whole unit suite is mechanical, hands-on verify work: the same chain as the performance run.
|
|
339
|
-
chain: [devin-agent, claude-agent, codex-agent]
|
|
340
|
-
environments:
|
|
341
|
-
- {environment: devin, profiles: [devin-agent]}
|
|
342
|
-
- {environment: claude, profiles: [claude-agent]}
|
|
343
|
-
- {environment: codex, profiles: [codex-agent]}
|
|
344
|
-
perf.verify:
|
|
345
|
-
skill: starci
|
|
346
|
-
# Measuring a performance budget runs the product and reads numbers back: the hands-on verify chain.
|
|
347
|
-
chain: [devin-agent, claude-agent, codex-agent]
|
|
348
|
-
environments:
|
|
349
|
-
- {environment: devin, profiles: [devin-agent]}
|
|
350
|
-
- {environment: claude, profiles: [claude-agent]}
|
|
351
|
-
- {environment: codex, profiles: [codex-agent]}
|
|
352
|
-
release.deliver:
|
|
353
|
-
skill: starci
|
|
354
|
-
chain: [devin-agent, codex-agent, claude-agent]
|
|
355
|
-
environments:
|
|
356
|
-
- {environment: devin, profiles: [devin-agent]}
|
|
357
|
-
- {environment: codex, profiles: [codex-agent]}
|
|
358
|
-
- {environment: claude, profiles: [claude-agent]}
|
|
359
|
-
request.analyze:
|
|
360
|
-
skill: starci
|
|
361
|
-
# Turning a raw request into a scoped, checkable goal is planning work: the reasoning chain, the cheap pool never.
|
|
362
|
-
chain: [claude-agent, codex-agent]
|
|
363
|
-
environments:
|
|
364
|
-
- {environment: claude, profiles: [claude-agent]}
|
|
365
|
-
- {environment: codex, profiles: [codex-agent]}
|
|
366
|
-
review.verify:
|
|
367
|
-
skill: starci
|
|
368
|
-
chain: [devin-agent, claude-agent, codex-agent]
|
|
369
|
-
environments:
|
|
370
|
-
- {environment: devin, profiles: [devin-agent]}
|
|
371
|
-
- {environment: claude, profiles: [claude-agent]}
|
|
372
|
-
- {environment: codex, profiles: [codex-agent]}
|
|
373
|
-
handover.review:
|
|
374
|
-
skill: starci
|
|
375
|
-
# Writing the owner's handover is judging what was delivered and what was not proven: a verdict the hands
|
|
376
|
-
# give (owner decision 2026-09-25 review-hands), Opus and Sol as overflow.
|
|
377
|
-
chain: [devin-agent, claude-agent, codex-agent]
|
|
378
|
-
environments:
|
|
379
|
-
- {environment: devin, profiles: [devin-agent]}
|
|
380
|
-
- {environment: claude, profiles: [claude-agent]}
|
|
381
|
-
- {environment: codex, profiles: [codex-agent]}
|
|
382
|
-
runtime.operate:
|
|
383
|
-
skill: starci
|
|
384
|
-
chain: [devin-agent, codex-agent, claude-agent]
|
|
385
|
-
environments:
|
|
386
|
-
- {environment: devin, profiles: [devin-agent]}
|
|
387
|
-
- {environment: codex, profiles: [codex-agent]}
|
|
388
|
-
- {environment: claude, profiles: [claude-agent]}
|
|
389
|
-
scope.finish:
|
|
390
|
-
skill: starci
|
|
391
|
-
chain: [devin-agent, codex-agent, claude-agent]
|
|
392
|
-
environments:
|
|
393
|
-
- {environment: devin, profiles: [devin-agent]}
|
|
394
|
-
- {environment: codex, profiles: [codex-agent]}
|
|
395
|
-
- {environment: claude, profiles: [claude-agent]}
|
|
396
|
-
scope.define:
|
|
397
|
-
skill: starci
|
|
398
|
-
# Cutting a goal into bounded nodes is a decision about the work: the reasoning chain.
|
|
399
|
-
chain: [claude-agent, codex-agent]
|
|
400
|
-
environments:
|
|
401
|
-
- {environment: claude, profiles: [claude-agent]}
|
|
402
|
-
- {environment: codex, profiles: [codex-agent]}
|
|
403
|
-
security.verify:
|
|
404
|
-
skill: starci
|
|
405
|
-
# Auditing code against the security baseline is a verdict about quality: the ui order, Sol first
|
|
406
|
-
# (owner routing 2026-09-26).
|
|
407
|
-
chain: [codex-agent, devin-agent]
|
|
408
|
-
environments:
|
|
409
|
-
- {environment: codex, profiles: [codex-agent]}
|
|
410
|
-
- {environment: devin, profiles: [devin-agent]}
|
|
411
|
-
task.execute:
|
|
412
|
-
skill: starci
|
|
413
|
-
# A bounded, evidence-grounded workflow selection is a mechanical op: the implement order
|
|
414
|
-
# (owner routing 2026-09-26).
|
|
415
|
-
chain: [devin-agent, codex-agent, claude-agent]
|
|
416
|
-
environments:
|
|
417
|
-
- {environment: devin, profiles: [devin-agent]}
|
|
418
|
-
- {environment: codex, profiles: [codex-agent]}
|
|
419
|
-
- {environment: claude, profiles: [claude-agent]}
|
|
420
|
-
test.author:
|
|
421
|
-
skill: starci
|
|
422
|
-
# Authoring the regression check a behaviour-invariant change is measured against is implementation work:
|
|
423
|
-
# the full coding chain.
|
|
424
|
-
chain: [devin-agent, codex-agent, claude-agent]
|
|
425
|
-
environments:
|
|
426
|
-
- {environment: devin, profiles: [devin-agent]}
|
|
427
|
-
- {environment: codex, profiles: [codex-agent]}
|
|
428
|
-
- {environment: claude, profiles: [claude-agent]}
|
|
429
|
-
uat.verify:
|
|
430
|
-
skill: starci
|
|
431
|
-
chain: [devin-agent, claude-agent, codex-agent]
|
|
432
|
-
environments:
|
|
433
|
-
- {environment: devin, profiles: [devin-agent]}
|
|
434
|
-
- {environment: claude, profiles: [claude-agent]}
|
|
435
|
-
- {environment: codex, profiles: [codex-agent]}
|
|
436
|
-
uat.assisted.prepare:
|
|
437
|
-
skill: starci
|
|
438
|
-
# Preparation authors deterministic scripts/evidence but performs no product journey.
|
|
439
|
-
chain: [devin-agent, codex-agent, claude-agent]
|
|
440
|
-
environments:
|
|
441
|
-
- {environment: devin, profiles: [devin-agent]}
|
|
442
|
-
- {environment: codex, profiles: [codex-agent]}
|
|
443
|
-
- {environment: claude, profiles: [claude-agent]}
|
|
444
|
-
uat.assisted.verify:
|
|
445
|
-
skill: starci
|
|
446
|
-
# Receipt acceptance is an elevated verdict over evidence: the ui order, Sol first
|
|
447
|
-
# (owner routing 2026-09-26).
|
|
448
|
-
chain: [codex-agent, devin-agent]
|
|
449
|
-
environments:
|
|
450
|
-
- {environment: codex, profiles: [codex-agent]}
|
|
451
|
-
- {environment: devin, profiles: [devin-agent]}
|
|
452
|
-
work.author:
|
|
453
|
-
skill: starci
|
|
454
|
-
# Authoring the Work records - a node's scope and checks, a whole feature's drafts - is authoring the hands
|
|
455
|
-
# do (owner decision 2026-09-25 review-hands: "work.author" with test/UAT authoring); the kernel's cut
|
|
456
|
-
# decision (implementation.plan) stays on the think order.
|
|
457
|
-
chain: [devin-agent, claude-agent, codex-agent]
|
|
458
|
-
environments:
|
|
459
|
-
- {environment: devin, profiles: [devin-agent]}
|
|
460
|
-
- {environment: claude, profiles: [claude-agent]}
|
|
461
|
-
- {environment: codex, profiles: [codex-agent]}
|
|
462
|
-
workspace.manage:
|
|
463
|
-
skill: starci
|
|
464
|
-
# Workspace bookkeeping is a mechanical op: the implement order (owner routing 2026-09-26).
|
|
465
|
-
chain: [devin-agent, codex-agent, claude-agent]
|
|
466
|
-
environments:
|
|
467
|
-
- {environment: devin, profiles: [devin-agent]}
|
|
468
|
-
- {environment: codex, profiles: [codex-agent]}
|
|
469
|
-
- {environment: claude, profiles: [claude-agent]}
|
|
470
163
|
fallback:
|
|
471
164
|
allowedReasons:
|
|
472
165
|
- unavailable
|
|
@@ -482,52 +175,25 @@ fallback:
|
|
|
482
175
|
- safety-block
|
|
483
176
|
- partial-or-unknown-effects
|
|
484
177
|
selection: |-
|
|
485
|
-
Orca supplies the observed external-agent inventory.
|
|
486
|
-
|
|
487
|
-
after an allowed failure with verified no-effect state. This policy never
|
|
488
|
-
authenticates a provider, grants tools or expands the workflow authority. Every
|
|
489
|
-
way (modules/kernel/start-workflow.yaml): `orca orchestration worker-start --agent
|
|
178
|
+
Orca supplies the observed external-agent inventory. The tier chain (modules/models/tiers.yaml) names the
|
|
179
|
+
candidates; a member is taken only when it passes the picker's hard filter and has tokens (scripts/lib/tier-pick.mjs).
|
|
180
|
+
A launch falls to the next member only after an allowed failure with verified no-effect state. This policy never
|
|
181
|
+
installs an agent, authenticates a provider, grants tools or expands the workflow authority. Every member launches
|
|
182
|
+
the one way (modules/kernel/start-workflow.yaml): `orca orchestration worker-start --agent
|
|
490
183
|
<runtime> [--model <id> --effort <level>] --spec <prompt>` (Orca files the Task), the unattended flags from Orca's per-agent
|
|
491
184
|
default args; the launcher takes the agent terminal from the start receipt (else worker-show) and attests the effective agent and model
|
|
492
185
|
(worker-show). Devin takes no model flag (Orca: --model is for Claude, Codex and Cursor) and starts on its CLI default.
|
|
493
186
|
costPolicy: |-
|
|
494
|
-
Runtime pools are provider quota windows
|
|
495
|
-
|
|
496
|
-
and Devin opens through the owner's default grant (config.yaml
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
calls
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
task.execute and knowledge.repair - walk the implement order the hands serve whatever their kind role;
|
|
505
|
-
hands-on work runs the Devin and Codex pools with the Claude pool as overflow. brand.decide is think work that also generates a placeholder mascot when the product has none;
|
|
506
|
-
the Claude pool decides the identity and defers that artwork with a concrete brief, and the Codex pool, the
|
|
507
|
-
only one with an image generator, generates it when it takes the launch.
|
|
508
|
-
interface.draw token-renders its shapes (HTML/CSS in the Grammar's tokens, Playwright capture) and walks the
|
|
509
|
-
draw order: the Devin pool first, the Codex pool as fallback (owner ruling 2026-09-27); its raster regions are
|
|
510
|
-
artworkSlots, never painted by the drawer. interface.asset generates that artwork and therefore carries the
|
|
511
|
-
single image-capable Codex route, with no deferral fallback - a deferred
|
|
512
|
-
slot is exactly what this operation exists to close. grammar.update is the opposite case: it grows the
|
|
513
|
-
installed grammar as code - a typed unit with its stories, its tests, its published version and its canon
|
|
514
|
-
entry - so it carries the execution `implement` role at a hard floor; nothing in it is drawn, and a publish
|
|
515
|
-
is irreversible, so the chain is limited to declared coding runtimes. knowledge.repair rewrites a canonical
|
|
516
|
-
rule of this runtime and is think work the hands serve on the implement order. Every automatic chain contains only
|
|
517
|
-
worker-start candidates and advances only after a verified no-effect failure. Agents have explicit turn, wall-time
|
|
518
|
-
and tool-call ceilings; a ceiling stop is a failed attempt and never proof of completion.
|
|
519
|
-
Never infer price or quality superiority from a subscription label; benchmark bounded
|
|
520
|
-
representative operations before proposing another routing change. A native worker is released
|
|
521
|
-
after its exact worker_done result is accepted; the workflow child remains until integration is
|
|
522
|
-
complete. The chain does not decide who runs an operation - `modules/models/runtimes.yaml`
|
|
523
|
-
does, by role preference - so every operator's `environments` must declare every runtime that carries
|
|
524
|
-
that operation's role and owns a profile for it, and the chain lists exactly those targets so
|
|
525
|
-
`candidateFor` can answer with a launch shape for whichever runtime the allocator picked. A pool
|
|
526
|
-
whose roles do not cover an operation's role (Devin carries no `decide`, so they cannot take an
|
|
527
|
-
`architecture.decide`) stays out of that operator and is excluded from allocation by the roles gate
|
|
528
|
-
(scripts/agent/models.mjs poolRejectionReasons). The one widening: an order that names a role -
|
|
529
|
-
`implement` - lets a pool that serves the order take its kinds whatever the kind's own role, which is how
|
|
530
|
-
the mechanical ops reach the hands.
|
|
187
|
+
Runtime pools are provider quota windows. Which model takes which seat or operation is modules/models/tiers.yaml:
|
|
188
|
+
a seat or an op difficulty names a tier, a tier is an ordered member chain, and the picker takes the first member
|
|
189
|
+
with tokens after the owner bias and the balance step. Devin opens through the owner's default grant (config.yaml
|
|
190
|
+
allocation.grants). Drawing and artwork ops (interface.draw, interface.asset, brand.decide) take the tier of their
|
|
191
|
+
difficulty like every core op and make images through the headless `starci work imagegen` call, which is picked from the
|
|
192
|
+
imagegen call tier (tiers.yaml calls, tierUse) and holds one provider slot while it runs. Every automatic launch contains only worker-start candidates and advances only
|
|
193
|
+
after a verified no-effect failure. Agents have explicit turn, wall-time and tool-call ceilings; a ceiling stop is a
|
|
194
|
+
failed attempt and never proof of completion. Never infer price or quality superiority from a subscription label;
|
|
195
|
+
benchmark bounded representative operations before proposing another tier change. A native worker is released
|
|
196
|
+
after its exact worker_done result is accepted; the workflow child remains until integration is complete.
|
|
531
197
|
assetFallback: When image generation is unavailable, reuse verified assets first; Claude may leave
|
|
532
198
|
decorative image slots blank with a concrete deferred brief. Never mark missing artwork generated
|
|
533
199
|
or satisfy a functional criterion with a blank slot.
|