@orkestrel/scaffold 0.0.75 → 0.0.77

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.
@@ -23,8 +23,8 @@ wins over this list. The brief forbids edits, commands, reconciliation, orchestr
23
23
  acceptance.
24
24
 
25
25
  The route holds the subjective lane by default and the objective lane whenever the round
26
- needs an engine that is not the one running that lane, including when the Sol bench is dark
27
- and when Sol wrote the work under audit.
26
+ needs an engine that is not the one running that lane, including when the Astra bench is dark
27
+ and when Astra wrote the work under audit.
28
28
 
29
29
  Your sandbox is read-only: you never edit a file and never write your report to a file. You
30
30
  therefore write neither the brief nor the journal. Return the brief text, its intended path,
@@ -13,7 +13,7 @@ This route pins `--permission-mode plan`.
13
13
  The brief names the lane the route holds, and requires the returned verdict to state
14
14
  which lane it held. The route holds the subjective lane by default and the objective
15
15
  lane whenever the round needs an engine that is not the one running that lane,
16
- including when the Sol bench is dark and when Sol wrote the work under audit. The
16
+ including when the Astra bench is dark and when Astra wrote the work under audit. The
17
17
  Claude charter enumerates the lenses of each lane, and a verdict returned under the
18
18
  objective lane holds those lenses in full. The brief
19
19
  requires the `orkestrel-falsify` verdict shape and its single
@@ -1,6 +1,6 @@
1
1
  name = "sol"
2
- description = "GPT-5.6 Sol implementation of one bounded nontrivial unit as the sole serial writer in the checkout the unit writes — the objective mirror of `opus`."
3
- model = "gpt-5.6-sol"
2
+ description = "GPT-6 Astra implementation of one bounded nontrivial unit as the sole serial writer in the checkout the unit writes — the objective mirror of `opus`."
3
+ model = "gpt-6-astra"
4
4
  model_reasoning_effort = "high"
5
5
  sandbox_mode = "workspace-write"
6
6
  developer_instructions = """
@@ -1,8 +1,8 @@
1
1
  approval_policy = "never"
2
2
  sandbox_mode = "danger-full-access"
3
- model = "gpt-5.6-sol"
3
+ model = "gpt-6-astra"
4
4
  model_reasoning_effort = "high"
5
- review_model = "gpt-5.6-sol"
5
+ review_model = "gpt-6-astra"
6
6
  developer_instructions = """
7
7
  Read AGENTS.md, .agents/orchestration.md, every applicable .claude/rules/*.md file, the
8
8
  dispatch-named .agents/skills workflow and its required references, and the governing
@@ -10,7 +10,7 @@ guide or spec before acting. AGENTS.md controls code substance; .agents/orchestr
10
10
  controls agent operation; this layer adds only the following Codex specifics and cannot
11
11
  weaken either.
12
12
 
13
- Sol orchestrates in this harness. Act as the Orchestrator defined in
13
+ Astra orchestrates in this harness. Act as the Orchestrator defined in
14
14
  .agents/orchestration.md; everything in that file is unchanged.
15
15
 
16
16
  When an invocation explicitly assigns a bounded executor route, follow that dispatch
@@ -18,9 +18,9 @@ instead of acting as the primary Orchestrator. Do not delegate or expand its sco
18
18
 
19
19
  Which local agent carries which engine, so the contract's routing resolves here. The
20
20
  contract owns when each is used; this is only the mapping:
21
- - Sol: this session, plus analyst and sol.
21
+ - Astra: this session, plus analyst and sol.
22
22
  - Cursor Grok: the grok bridge, read-only.
23
- - Claude Opus 5: the planner and reviewer bridges, read-only, and the opus bridge for
23
+ - Claude Opus 5.5: the planner and reviewer bridges, read-only, and the opus bridge for
24
24
  writes.
25
25
  - Luna: distiller, researcher, scout, and checker.
26
26
  - Terra: bridge drivers and fully specified units (builder, application, verifier).
@@ -23,9 +23,9 @@ A Cursor session takes one of these postures. Establish which before acting.
23
23
 
24
24
  ## Reaching the other engines
25
25
 
26
- - Reach Opus 5 and Sol only through the `codex` and `claude` MCP servers registered in
26
+ - Reach Opus 5.5 and Astra only through the `codex` and `claude` MCP servers registered in
27
27
  `.cursor/mcp.json`, which run those CLIs on their own accounts.
28
- - Never select another provider's model from Cursor's own model list. Cursor offers Opus, Sol, and
28
+ - Never select another provider's model from Cursor's own model list. Cursor offers Opus, Astra, and
29
29
  others, but running them here spends Cursor credits for work an MCP server does for free. Cursor
30
30
  is the Grok bench and nothing else.
31
31
  - Approve both servers once per machine: `agent mcp enable codex` and `agent mcp enable claude`.
@@ -10,7 +10,7 @@
10
10
  "storage": "CLAUDE.md",
11
11
  "destination": "CLAUDE.md",
12
12
  "executable": false,
13
- "digest": "37071aac55bb49a24f8fa1a084bbdc351b9ce95ebf1dfc4b91d2d794123b8475"
13
+ "digest": "f98ede17037104d0eca43598f6332fddc582d573ad20f6cfda85667f0e1bc8f2"
14
14
  },
15
15
  {
16
16
  "storage": "LICENSE",
@@ -22,7 +22,7 @@
22
22
  "storage": "agents/orchestration.md",
23
23
  "destination": ".agents/orchestration.md",
24
24
  "executable": false,
25
- "digest": "79665a163e76744984cefb41e335bd53d5f88f4830d52ad966112e23903b0f6b"
25
+ "digest": "d90a3808fe395a76407b3dc2ab4560509b5930930b04d326434f596951371e50"
26
26
  },
27
27
  {
28
28
  "storage": "agents/skills/enterprise-bootstrap/SKILL.md",
@@ -304,37 +304,37 @@
304
304
  "storage": "agents/transports/claude.md",
305
305
  "destination": ".agents/transports/claude.md",
306
306
  "executable": false,
307
- "digest": "fa9f4892e73f7bbc56b89d7283ccff2fc774fe68a68d274a931f5a45231d19a8"
307
+ "digest": "619a15d6b38f90b0d086f9cadb9be14f6d91e96b0a9170a8a9b707630ae93524"
308
308
  },
309
309
  {
310
310
  "storage": "agents/transports/codex.md",
311
311
  "destination": ".agents/transports/codex.md",
312
312
  "executable": false,
313
- "digest": "830a8f702996c0e8f8f332dbd2555699488d09473b56062985fe4e5d88a501e6"
313
+ "digest": "bac6d8f2b18c65ecbfdac51b9fdacfd49f1b1164321480c95da882efb5bae57d"
314
314
  },
315
315
  {
316
316
  "storage": "agents/transports/cursor.md",
317
317
  "destination": ".agents/transports/cursor.md",
318
318
  "executable": false,
319
- "digest": "0f9253a58446d255bc88740ae5300a33eb66d6cfa5734c36ac8bae9ade80c278"
319
+ "digest": "18a2ad7a77f9460b0dfdd9106388a8c8ebdc45c0ade89f7bfb04e2926f95f9ca"
320
320
  },
321
321
  {
322
322
  "storage": "claude/agents/analyst.md",
323
323
  "destination": ".claude/agents/analyst.md",
324
324
  "executable": false,
325
- "digest": "1ac3763736474bdc691162b22e8f9e189b22d85102f81e68f0314392f640c5b6"
325
+ "digest": "c4194fa19d83d9990be6938345bf01f6b8890374bb4130f55c4792337ad80cf0"
326
326
  },
327
327
  {
328
328
  "storage": "claude/agents/application.md",
329
329
  "destination": ".claude/agents/application.md",
330
330
  "executable": false,
331
- "digest": "19c91ffbad81bb64a83f25ba46fb10dadc5c1404057b40ea216d23ec5a7216f3"
331
+ "digest": "52d68fb4abaad9fa8c7bc2cf7b440a58856ee311fe999ae338a2ba06b97cf38f"
332
332
  },
333
333
  {
334
334
  "storage": "claude/agents/builder.md",
335
335
  "destination": ".claude/agents/builder.md",
336
336
  "executable": false,
337
- "digest": "03aed37b151f91d378ff6eecd3be68f5545f580174737b61796faf9370a802a9"
337
+ "digest": "d79ab7499464e8a4605c9539c6e65d261cca7b8435a2cef4c8468442869bdb83"
338
338
  },
339
339
  {
340
340
  "storage": "claude/agents/checker.md",
@@ -358,7 +358,7 @@
358
358
  "storage": "claude/agents/opus.md",
359
359
  "destination": ".claude/agents/opus.md",
360
360
  "executable": false,
361
- "digest": "99a4564c13f49807c4226a2d09cb698fc6caab9a132219ad5cedd5e04d4d6409"
361
+ "digest": "463f5552212837e86d23bd20e1bbdcba808f95365eb0d050fb8b9a8bb80263f5"
362
362
  },
363
363
  {
364
364
  "storage": "claude/agents/orkestrel.md",
@@ -370,7 +370,7 @@
370
370
  "storage": "claude/agents/planner.md",
371
371
  "destination": ".claude/agents/planner.md",
372
372
  "executable": false,
373
- "digest": "06f2b6317c3a0f32ad163eb5e90505790b55d3536d0c984b9d8dac49ccff1324"
373
+ "digest": "7e066ed9c5794cf95b16dd14b00c228456b2a8e005e1b995bb60196fd31feb9f"
374
374
  },
375
375
  {
376
376
  "storage": "claude/agents/researcher.md",
@@ -382,7 +382,7 @@
382
382
  "storage": "claude/agents/reviewer.md",
383
383
  "destination": ".claude/agents/reviewer.md",
384
384
  "executable": false,
385
- "digest": "fbd9737b3d1049797c900d80af21a2cdb46338516c3c5f8b0089cd5fa3494202"
385
+ "digest": "ac9e4cefcf8ba9a92399d1ac0ebbdbaf21ea5af0d0737f5e26764f77eb7eefcb"
386
386
  },
387
387
  {
388
388
  "storage": "claude/agents/scout.md",
@@ -394,7 +394,7 @@
394
394
  "storage": "claude/agents/sol.md",
395
395
  "destination": ".claude/agents/sol.md",
396
396
  "executable": false,
397
- "digest": "bedefa0eb3606d10d418c6af1df54cbffae0342a31c22a115e9d112edb2b5364"
397
+ "digest": "3ae5a22af093181db6746a036a38fdda81095e59a45d1ccd0beb12c2a5c3af3f"
398
398
  },
399
399
  {
400
400
  "storage": "claude/agents/verifier.md",
@@ -454,7 +454,7 @@
454
454
  "storage": "claude/rules/styles.md",
455
455
  "destination": ".claude/rules/styles.md",
456
456
  "executable": false,
457
- "digest": "5d0a8b9d36f0cff90e6cd4296ea1055c5a835c81b430c67b16d802c7adc2b6fc"
457
+ "digest": "9393ce28750e93f790da32e991e2edc7ca3d8cc1c527f40a43aeaabb202d52bc"
458
458
  },
459
459
  {
460
460
  "storage": "claude/rules/tests.md",
@@ -544,7 +544,7 @@
544
544
  "storage": "codex/agents/analyst.toml",
545
545
  "destination": ".codex/agents/analyst.toml",
546
546
  "executable": false,
547
- "digest": "a373d3db220adca3f606e97ef88e20ae3241c44e9c2f5bfa3c811c08f1ab9683"
547
+ "digest": "f23c2221bbe760a42dcecdc336b67900f09d8609b225a4613cdd0b384ca0f8ac"
548
548
  },
549
549
  {
550
550
  "storage": "codex/agents/application.toml",
@@ -592,7 +592,7 @@
592
592
  "storage": "codex/agents/planner.toml",
593
593
  "destination": ".codex/agents/planner.toml",
594
594
  "executable": false,
595
- "digest": "d5d77bff51bf730d3303be8ecb651b4265ded4a4c386cd0b819d8418d9f97cb5"
595
+ "digest": "cd35d4dd43a190d9f82f1b1a5a83b1c630ff178558bf4480c198b3c10e7207c8"
596
596
  },
597
597
  {
598
598
  "storage": "codex/agents/researcher.toml",
@@ -604,7 +604,7 @@
604
604
  "storage": "codex/agents/reviewer.toml",
605
605
  "destination": ".codex/agents/reviewer.toml",
606
606
  "executable": false,
607
- "digest": "3ca906198e9dc50d2fe637aa7adb215999b3b01b9a6a9464f8c88750f484bba3"
607
+ "digest": "5a091b9ab0ab28d7241ac9e3e321d0287c8c748a8a35c7233e62f5c654b16cbb"
608
608
  },
609
609
  {
610
610
  "storage": "codex/agents/scout.toml",
@@ -616,7 +616,7 @@
616
616
  "storage": "codex/agents/sol.toml",
617
617
  "destination": ".codex/agents/sol.toml",
618
618
  "executable": false,
619
- "digest": "3f8dc5123da5d3d44949ec5c5f0b0832a2069258063903b18ddf2132bdbe1bf0"
619
+ "digest": "bcb65b994c03d28d038546981d84ed02c0872ff6c8174c5b353326e9901d93cd"
620
620
  },
621
621
  {
622
622
  "storage": "codex/agents/verifier.toml",
@@ -628,7 +628,7 @@
628
628
  "storage": "codex/config.toml",
629
629
  "destination": ".codex/config.toml",
630
630
  "executable": false,
631
- "digest": "c8364a20fca401e65f3c092968b1f6b4d4e025a1efd91e22beb01b3fcd39e076"
631
+ "digest": "b6888e0b5c739770b7142f1112352155828aa89f2b5f168e2c6e5e1ace4427af"
632
632
  },
633
633
  {
634
634
  "storage": "configs/helpers.ts",
@@ -652,7 +652,7 @@
652
652
  "storage": "cursor/rules/orchestration.mdc",
653
653
  "destination": ".cursor/rules/orchestration.mdc",
654
654
  "executable": false,
655
- "digest": "0a18350c6f0a211e42b7d0f3b40a483a57be6ac6a81c83814f147d39fe2016d3"
655
+ "digest": "0498c733a5cf9b54e96604632c8b4afc26924f57405b229a7adafc997e4aaaf1"
656
656
  },
657
657
  {
658
658
  "storage": "dotfiles/editorconfig",
@@ -1012,7 +1012,7 @@
1012
1012
  "storage": "scripts/codex.sh",
1013
1013
  "destination": "scripts/codex.sh",
1014
1014
  "executable": true,
1015
- "digest": "747afc870663de1874fc5580cb6a1425dfb2fb112db2f31ed703d1dc5512cf38"
1015
+ "digest": "440b1ab79eb2f67a84aa134fba90f2e480f21417bd3ec43965b665c83dabf703"
1016
1016
  },
1017
1017
  {
1018
1018
  "storage": "scripts/cursor.sh",
@@ -1048,7 +1048,7 @@
1048
1048
  "storage": "tests/setupPolicy.ts",
1049
1049
  "destination": "tests/setupPolicy.ts",
1050
1050
  "executable": false,
1051
- "digest": "9065dde1bc5ef6541a36dfb9b478d990102f804af9e5c78e0ed6b44521678974"
1051
+ "digest": "3600093f5ea69b236df634aadf9a67ea73aec4bdcd799ae5178a2d1d26797f10"
1052
1052
  }
1053
1053
  ],
1054
1054
  "roots": [
@@ -2001,5 +2001,5 @@
2001
2001
  ]
2002
2002
  }
2003
2003
  ],
2004
- "digest": "6e8e2b0524717bfc2b648acba0de5901c7c267a9c189155b45e3cb681b14bf6d"
2004
+ "digest": "b1785371b9c05514926a6a7a43e0e9fea363754cf5c2017ea6102f9718924bee"
2005
2005
  }
@@ -11,9 +11,9 @@ if ! command -v codex >/dev/null 2>&1; then
11
11
  exit 0
12
12
  fi
13
13
 
14
- analyst_model="${CODEX_ANALYST_MODEL:-gpt-5.6-sol}"
14
+ analyst_model="${CODEX_ANALYST_MODEL:-gpt-6-astra}"
15
15
  analyst_effort="${CODEX_ANALYST_EFFORT:-high}"
16
- implementer_model="${CODEX_IMPLEMENTER_MODEL:-gpt-5.6-sol}"
16
+ implementer_model="${CODEX_IMPLEMENTER_MODEL:-gpt-6-astra}"
17
17
  implementer_effort="${CODEX_IMPLEMENTER_EFFORT:-high}"
18
18
 
19
19
  valid_model() {
File without changes
File without changes
File without changes
@@ -96,6 +96,13 @@ export const POLICY_SURFACE_EXPORT_CASES = Object.freeze([
96
96
  export const POLICY_SURFACE_BARREL_PATTERN =
97
97
  /^\s*export\s+\*\s+from\s+(?:'(\.\.?\/[^']+\.js)'|"(\.\.?\/[^"]+\.js)")\s*;?\s*$/u
98
98
 
99
+ /** Names the workspace-relative styles side-effect entry the workspace rule prescribes. */
100
+ export const POLICY_SURFACE_STYLES_ENTRY = 'src/styles/index.ts'
101
+
102
+ /** Names the violation reported when the styles side-effect entry does not import `./index.scss` alone. */
103
+ export const POLICY_SURFACE_STYLES_MESSAGE =
104
+ 'surface population incomplete: styles entry must import ./index.scss and nothing else'
105
+
99
106
  /**
100
107
  * Creates a guide whose surface claims the supplied fixture names.
101
108
  *
@@ -2233,15 +2240,46 @@ export function collectPolicyDeclarations(
2233
2240
  *
2234
2241
  * @param root - The workspace root to inspect.
2235
2242
  * @returns The parsed declarations and incomplete-population violations.
2243
+ * @remarks
2244
+ * The `src/styles/index.ts` side-effect entry is excluded from barrel validation and instead
2245
+ * requires exactly one bare `./index.scss` import.
2236
2246
  */
2237
2247
  export function readPolicySurface(root: string): PolicySurfacePopulation {
2238
2248
  const files: Record<string, string> = {}
2239
2249
  for (const path of globSync('src/**/*.ts', { cwd: root }).map(normalizePolicyPath).sort()) {
2240
2250
  files[path] = readFileSync(join(root, path), 'utf8')
2241
2251
  }
2242
- const barrels = Object.keys(files).filter((path) => path.endsWith('/index.ts'))
2252
+ const barrels = Object.keys(files).filter(
2253
+ (path) => path.endsWith('/index.ts') && path !== POLICY_SURFACE_STYLES_ENTRY,
2254
+ )
2243
2255
  const targets = new Set<string>()
2244
2256
  const violations: PolicyViolation[] = []
2257
+ const stylesEntry = files[POLICY_SURFACE_STYLES_ENTRY]
2258
+ if (stylesEntry !== undefined) {
2259
+ const stylesSource = parseSync(POLICY_SURFACE_STYLES_ENTRY, stylesEntry)
2260
+ const stylesStatement =
2261
+ stylesSource.errors.length === 0 ? stylesSource.program.body[0] : undefined
2262
+ const stylesValid =
2263
+ stylesSource.errors.length === 0 &&
2264
+ stylesSource.program.body.length === 1 &&
2265
+ stylesStatement?.type === 'ImportDeclaration' &&
2266
+ stylesStatement.specifiers.length === 0 &&
2267
+ stylesStatement.source.value === './index.scss'
2268
+ if (!stylesValid) {
2269
+ const line =
2270
+ stylesStatement === undefined
2271
+ ? 1
2272
+ : stylesEntry.slice(0, stylesStatement.start).split(/\r\n|\n/u).length
2273
+ violations.push(
2274
+ createPolicyViolation(
2275
+ 'surface',
2276
+ POLICY_SURFACE_STYLES_ENTRY,
2277
+ POLICY_SURFACE_STYLES_MESSAGE,
2278
+ line,
2279
+ ),
2280
+ )
2281
+ }
2282
+ }
2245
2283
  for (const path of barrels) {
2246
2284
  const text = files[path]
2247
2285
  if (text === undefined) continue
@@ -4,7 +4,7 @@ let _orkestrel_template = require("@orkestrel/template");
4
4
  let _orkestrel_emitter = require("@orkestrel/emitter");
5
5
  var package_default = {
6
6
  name: "@orkestrel/scaffold",
7
- version: "0.0.75",
7
+ version: "0.0.77",
8
8
  description: "Scaffold workspaces with commands: new, audit, repair, catalog, and overwrite.",
9
9
  keywords: [
10
10
  "audit",
@@ -102,7 +102,7 @@ var package_default = {
102
102
  "@orkestrel/guide": "^0.0.20",
103
103
  "@orkestrel/html": "^0.0.10",
104
104
  "@orkestrel/probe": "^0.0.16",
105
- "@orkestrel/test": "^0.0.18",
105
+ "@orkestrel/test": "^0.0.20",
106
106
  "@types/node": "^26.5.1",
107
107
  "@vitest/browser-playwright": "^4.1.11",
108
108
  "oxfmt": "^0.68.0",