@codedrifters/configulator 0.0.248 → 0.0.250

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/lib/index.mjs CHANGED
@@ -869,7 +869,36 @@ var baseBundle = {
869
869
  "- **Never edit generated files** \u2014 they are marked with `// ~~ Generated by projen`",
870
870
  "- **After modifying Projen configuration**, run `pnpm exec projen` to regenerate files, then `pnpm install` to update the lockfile.",
871
871
  "- **Configure dependencies through Projen** \u2014 never use `npm install`, `pnpm add`, or `yarn add`. Add them to `deps` or `devDeps` in Projen config.",
872
- "- **Export from index.ts** to maintain clean public APIs"
872
+ "- **Export from index.ts** to maintain clean public APIs",
873
+ "",
874
+ "## Repository Layout",
875
+ "",
876
+ "Every monorepo built with `@codedrifters/configulator` uses a fixed",
877
+ "top-level folder layout. Read a sub-project's role directly from its",
878
+ "outdir:",
879
+ "",
880
+ "| Folder | Purpose |",
881
+ "|--------|---------|",
882
+ "| `/docs` | **Single** monorepo-wide Starlight docs site (the one site that lives outside `/sites`). |",
883
+ "| `/apps/@scope/<name>` | Deployable applications (CDK stacks, mobile apps, backend services). |",
884
+ "| `/packages/@scope/<name>` | Shared libraries (published npm packages and workspace-internal libraries). |",
885
+ "| `/sites/@scope/<name>` | User-facing web front ends that are **not** the monorepo-wide docs site. |",
886
+ "",
887
+ "Every sub-project under `apps/`, `packages/`, or `sites/` is named",
888
+ "`@ownerscope/<name>`, where **scope is the owning party** (not a",
889
+ "category). Kind is captured by the top-level folder \u2014 never scope by",
890
+ "category (e.g. `@apps/foo`, `@libs/bar`).",
891
+ "",
892
+ "To place a **new** sub-project, always use a scaffolding skill \u2014 never",
893
+ "hand-roll the path:",
894
+ "",
895
+ "- `/create-package` \u2014 new shared library under `packages/<scope>/<name>`",
896
+ "- `/create-app` \u2014 new deployable app under `apps/<scope>/<name>`",
897
+ "- `/create-site` \u2014 new web front end under `sites/<scope>/<name>`",
898
+ "",
899
+ "The `monorepo-layout` rule documents the full contract (outdir",
900
+ "defaults per project type, the docs-singleton carve-out, synth-time",
901
+ "enforcement)."
873
902
  ].join("\n"),
874
903
  tags: ["project"]
875
904
  },
@@ -1220,8 +1249,8 @@ var baseBundle = {
1220
1249
  "at `/docs`. It is **not** `sites/@scope/docs`.",
1221
1250
  "",
1222
1251
  "- The docs site is monorepo-wide. Sub-project documentation belongs",
1223
- " inside that single site (under `docs/content/`), not in a per-package",
1224
- " `docs/` folder.",
1252
+ " inside that single site (under `docs/src/content/docs/`), not in a",
1253
+ " per-package `docs/` folder.",
1225
1254
  "- Configulator's `StarlightProject` defaults its `outdir` to `/docs` and",
1226
1255
  ' its `role` to `"docs"`. A second `StarlightProject` with `role: "docs"`',
1227
1256
  " fails synth \u2014 the singleton rule is enforced at validate time.",
@@ -1314,7 +1343,7 @@ var baseBundle = {
1314
1343
  };
1315
1344
 
1316
1345
  // src/agent/bundles/project-context.ts
1317
- var PROJECT_CONTEXT_PATH = "docs/project-context.md";
1346
+ var PROJECT_CONTEXT_PATH = "docs/src/content/docs/project-context.md";
1318
1347
  var SUBPROJECT_ROLE_GUIDANCE = [
1319
1348
  "### Sub-project roles",
1320
1349
  "",
@@ -1486,7 +1515,7 @@ var bcmWriterSubAgent = {
1486
1515
  " map rating), L1/L2/L3 decomposition with business-object focus,",
1487
1516
  " and value stream cross-mapping are preserved verbatim. Only",
1488
1517
  " *paths* are parameterized; vocabulary is not.",
1489
- "5. **Project Relevance comes from `docs/project-context.md`.** The",
1518
+ "5. **Project Relevance comes from `docs/src/content/docs/project-context.md`.** The",
1490
1519
  " Project Relevance section of every BCM document is framed against",
1491
1520
  " the mission, target users, and in/out-of-scope capabilities",
1492
1521
  " captured in that file. Never invent project framing.",
@@ -1521,7 +1550,7 @@ var bcmWriterSubAgent = {
1521
1550
  "|-------|-------|-------------|",
1522
1551
  "| `bcm:outline` | 1. Outline | Identify the capability (name-as-noun, business object, L1/L2/L3 tier). Write a short outline file in the outline working directory. Create the scaffold issue. |",
1523
1552
  "| `bcm:scaffold` | 2. Scaffold | Create the BCM document with BIZBOK section headings and placeholder content for each attribute. Create the context issue. |",
1524
- "| `bcm:context` | 3. Context | Fill Project Relevance (framed against `docs/project-context.md`), Value Stream Mapping, Enabling Software Systems, Roles Involved, and Company Size Applicability. Create the connect issue. |",
1553
+ "| `bcm:context` | 3. Context | Fill Project Relevance (framed against `docs/src/content/docs/project-context.md`), Value Stream Mapping, Enabling Software Systems, Roles Involved, and Company Size Applicability. Create the connect issue. |",
1525
1554
  "| `bcm:connect` | 4. Connect | Cross-link with parent/sibling capabilities, update the capability registry `_index.md` and capability-map file, and open downstream research issues for surfaced people/companies/requirement gaps. |",
1526
1555
  "",
1527
1556
  "All issues also carry `type:bcm-document` and a `status:*` label.",
@@ -1534,7 +1563,7 @@ var bcmWriterSubAgent = {
1534
1563
  "**Shortened paths:**",
1535
1564
  "- **Outline determines the capability is out of scope** (duplicate of",
1536
1565
  " an existing capability, not a business capability, or clearly not",
1537
- " relevant per `docs/project-context.md`) \u2192 outline issue closes with",
1566
+ " relevant per `docs/src/content/docs/project-context.md`) \u2192 outline issue closes with",
1538
1567
  " a justification and no downstream issues are created \u2192 **1",
1539
1568
  " session**.",
1540
1569
  "- **Scaffold reuses an existing BCM document** (the capability turned",
@@ -1558,15 +1587,15 @@ var bcmWriterSubAgent = {
1558
1587
  "",
1559
1588
  "| Placeholder | Meaning | Default |",
1560
1589
  "|-------------|---------|---------|",
1561
- "| `<BCM_DOC_ROOT>` | Root folder for all BCM capability-model documents | `docs/bcm/` |",
1562
- "| `<OUTLINE_ROOT>` | Working-directory root for outline files produced in Phase 1 | `docs/bcm/.outlines/` |",
1590
+ "| `<BCM_DOC_ROOT>` | Root folder for all BCM capability-model documents | `docs/src/content/docs/concepts/` |",
1591
+ "| `<OUTLINE_ROOT>` | Working-directory root for outline files produced in Phase 1 | `docs/src/content/docs/concepts/.outlines/` |",
1563
1592
  "| `<REGISTRY_INDEX>` | Capability registry `_index.md` file that lists every BCM doc | `<BCM_DOC_ROOT>/_index.md` |",
1564
1593
  "| `<CAPABILITY_MAP>` | Capability-map file that shows the L1/L2/L3 hierarchy | `<BCM_DOC_ROOT>/capability-map.md` |",
1565
1594
  "| `<ENTITY_TAXONOMY>` | Entity-taxonomy / product-context file used for business-object alignment | `docs/product/entity-taxonomy.md` |",
1566
1595
  "| `<BCM_SLUG>` | Short kebab-case slug identifying one BCM capability | derived from the capability name |",
1567
- "| `<PREFIX>` | Optional project-specific BCM ID prefix | derived from `docs/project-context.md` if specified |",
1596
+ "| `<PREFIX>` | Optional project-specific BCM ID prefix | derived from `docs/src/content/docs/project-context.md` if specified |",
1568
1597
  "",
1569
- "If `docs/project-context.md` specifies a different BCM tree, prefer",
1598
+ "If `docs/src/content/docs/project-context.md` specifies a different BCM tree, prefer",
1570
1599
  "that. Otherwise fall back to the defaults above.",
1571
1600
  "",
1572
1601
  "---",
@@ -1588,7 +1617,7 @@ var bcmWriterSubAgent = {
1588
1617
  "| **Definition** | 1\u20132 sentences | Describes what the capability is and its boundary \u2014 not how it is implemented. |",
1589
1618
  "| **Outcome** | 1 sentence | The measurable result the capability produces for the business. |",
1590
1619
  "| **Tier** | `L1` / `L2` / `L3` | L1 = top-level domain, L2 = mid-level grouping, L3 = granular capability that maps to one business object. |",
1591
- "| **Heat Map Rating** | `critical` / `high` / `medium` / `low` | Strategic importance to the business. Sourced from `docs/project-context.md` or the invoking issue \u2014 never invented. |",
1620
+ "| **Heat Map Rating** | `critical` / `high` / `medium` / `low` | Strategic importance to the business. Sourced from `docs/src/content/docs/project-context.md` or the invoking issue \u2014 never invented. |",
1592
1621
  "",
1593
1622
  "### L1 / L2 / L3 Decomposition",
1594
1623
  "",
@@ -1616,7 +1645,7 @@ var bcmWriterSubAgent = {
1616
1645
  "- The input/output business objects at each stage",
1617
1646
  "",
1618
1647
  "Value streams are authoritative inputs \u2014 they come from",
1619
- "`docs/project-context.md`, a dedicated value-stream doc under",
1648
+ "`docs/src/content/docs/project-context.md`, a dedicated value-stream doc under",
1620
1649
  "`<BCM_DOC_ROOT>`, or the invoking issue. If no value stream is",
1621
1650
  "defined, write a `TODO: value stream not yet defined` placeholder and",
1622
1651
  "flag the context issue with `status:needs-attention`. Never invent",
@@ -1644,7 +1673,7 @@ var bcmWriterSubAgent = {
1644
1673
  "and write a short outline file that the scaffold phase will use as its",
1645
1674
  "spec.",
1646
1675
  "",
1647
- "**Budget:** Reading the invoking issue, `docs/project-context.md`, the",
1676
+ "**Budget:** Reading the invoking issue, `docs/src/content/docs/project-context.md`, the",
1648
1677
  "capability map, the entity taxonomy, and the registry `_index.md`.",
1649
1678
  "Write one outline file. No BCM document is created in this phase.",
1650
1679
  "",
@@ -1656,7 +1685,7 @@ var bcmWriterSubAgent = {
1656
1685
  " any proposed tier, and any authoritative references (value streams,",
1657
1686
  " existing parents/siblings, source meeting, source requirement).",
1658
1687
  "",
1659
- "2. **Read `docs/project-context.md`** for mission, in/out-of-scope",
1688
+ "2. **Read `docs/src/content/docs/project-context.md`** for mission, in/out-of-scope",
1660
1689
  " capabilities, domain vocabulary, and any BCM-specific overrides",
1661
1690
  " (paths, prefix, heat-map inputs).",
1662
1691
  "",
@@ -1800,7 +1829,7 @@ var bcmWriterSubAgent = {
1800
1829
  " TODO: filled in Phase 3 (Context).",
1801
1830
  "",
1802
1831
  " ## Project Relevance",
1803
- " TODO: filled in Phase 3 (Context) from docs/project-context.md.",
1832
+ " TODO: filled in Phase 3 (Context) from docs/src/content/docs/project-context.md.",
1804
1833
  "",
1805
1834
  " ## Traceability",
1806
1835
  " - **Parent capability:** <parent-slug or `none`>",
@@ -1828,7 +1857,7 @@ var bcmWriterSubAgent = {
1828
1857
  "Roles Involved, and Company Size Applicability \u2014 and append a",
1829
1858
  "revision-history entry.",
1830
1859
  "",
1831
- "**Budget:** Read the scaffold, `docs/project-context.md`, the value",
1860
+ "**Budget:** Read the scaffold, `docs/src/content/docs/project-context.md`, the value",
1832
1861
  "stream source, and the entity taxonomy. Targeted research only \u2014",
1833
1862
  "enough to fill each section with cited facts. Do not open downstream",
1834
1863
  "issues in this phase; that is Phase 4's job.",
@@ -1847,13 +1876,13 @@ var bcmWriterSubAgent = {
1847
1876
  "",
1848
1877
  "1. **Read the scaffolded BCM document** referenced in the issue body.",
1849
1878
  "",
1850
- "2. **Read `docs/project-context.md`** for mission, target users,",
1879
+ "2. **Read `docs/src/content/docs/project-context.md`** for mission, target users,",
1851
1880
  " in/out-of-scope capabilities, and key stakeholders \u2014 this is the",
1852
1881
  " authoritative source for the Project Relevance section.",
1853
1882
  "",
1854
1883
  "3. **Resolve the value stream.** Find the value-stream source named in",
1855
1884
  " the outline or the issue body. If none is provided, check",
1856
- " `docs/project-context.md` and `<BCM_DOC_ROOT>` for a value-stream",
1885
+ " `docs/src/content/docs/project-context.md` and `<BCM_DOC_ROOT>` for a value-stream",
1857
1886
  " doc. If still unresolved, write a `TODO: value stream not yet",
1858
1887
  " defined` placeholder and flag the context issue with",
1859
1888
  " `status:needs-attention`.",
@@ -1866,7 +1895,7 @@ var bcmWriterSubAgent = {
1866
1895
  "5. **Fill `## Company Size Applicability`.** Indicate whether this",
1867
1896
  " capability applies to `small`, `medium`, `large`, or `enterprise`",
1868
1897
  " organizations, with a one-line rationale each. Source from",
1869
- " `docs/project-context.md` target users when possible.",
1898
+ " `docs/src/content/docs/project-context.md` target users when possible.",
1870
1899
  "",
1871
1900
  "6. **Fill `## Enabling Software Systems`.** List the software systems",
1872
1901
  " (internal or external) that enable this capability. Reference",
@@ -1884,7 +1913,7 @@ var bcmWriterSubAgent = {
1884
1913
  " ```",
1885
1914
  "",
1886
1915
  "8. **Fill `## Project Relevance`.** Frame the capability against",
1887
- " `docs/project-context.md`:",
1916
+ " `docs/src/content/docs/project-context.md`:",
1888
1917
  " - Which in-scope capability does this match (or overlap with)?",
1889
1918
  " - Which mission pillar does it support?",
1890
1919
  " - Which target-user role benefits from it?",
@@ -2063,13 +2092,13 @@ var writeBcmSkill = {
2063
2092
  "",
2064
2093
  "## Default Paths",
2065
2094
  "",
2066
- "If the project has no override in `docs/project-context.md` or",
2095
+ "If the project has no override in `docs/src/content/docs/project-context.md` or",
2067
2096
  "`agentConfig.rules`, outputs land under:",
2068
2097
  "",
2069
- "- `docs/bcm/.outlines/<slug>.outline.md` (Phase 1)",
2070
- "- `docs/bcm/<slug>.md` (Phases 2\u20134)",
2071
- "- `docs/bcm/_index.md` (Phase 4, registry update)",
2072
- "- `docs/bcm/capability-map.md` (Phase 4, capability-map update)",
2098
+ "- `docs/src/content/docs/concepts/.outlines/<slug>.outline.md` (Phase 1)",
2099
+ "- `docs/src/content/docs/concepts/<slug>.md` (Phases 2\u20134)",
2100
+ "- `docs/src/content/docs/concepts/_index.md` (Phase 4, registry update)",
2101
+ "- `docs/src/content/docs/concepts/capability-map.md` (Phase 4, capability-map update)",
2073
2102
  "",
2074
2103
  "## Steps",
2075
2104
  "",
@@ -2292,7 +2321,7 @@ var companyProfileAnalystSubAgent = {
2292
2321
  "| `<PEOPLE_PROFILES_DIR>` | Where existing people profiles live (for duplicate detection during followup) | `docs/people/profiles/` |",
2293
2322
  "| `<SOFTWARE_PROFILES_DIR>` | Where existing software profiles live (for duplicate detection during followup) | `docs/software/profiles/` |",
2294
2323
  "",
2295
- "If `docs/project-context.md` specifies a different company-research",
2324
+ "If `docs/src/content/docs/project-context.md` specifies a different company-research",
2296
2325
  "tree (for example by reusing the research-pipeline deliverables",
2297
2326
  "folder), prefer that. Otherwise fall back to the defaults above.",
2298
2327
  "",
@@ -2642,7 +2671,7 @@ var profileCompanySkill = {
2642
2671
  "",
2643
2672
  "## Default Paths",
2644
2673
  "",
2645
- "If the project has no override in `docs/project-context.md` or",
2674
+ "If the project has no override in `docs/src/content/docs/project-context.md` or",
2646
2675
  "`agentConfig.rules`, outputs land under:",
2647
2676
  "",
2648
2677
  "- `docs/companies/notes/<slug>.notes.md`",
@@ -3049,7 +3078,7 @@ var industryDiscoveryAnalystSubAgent = {
3049
3078
  "the consuming project sells, which industries matter, or what the",
3050
3079
  "scoring rubric should weight. All domain-specific vocabulary, scoring",
3051
3080
  "inputs, output locations, and threshold values come from the invoking",
3052
- "issue body, `docs/project-context.md`, or the consuming project's",
3081
+ "issue body, `docs/src/content/docs/project-context.md`, or the consuming project's",
3053
3082
  "configuration.",
3054
3083
  "",
3055
3084
  "Follow your project's shared agent conventions (`AGENTS.md`,",
@@ -3074,7 +3103,7 @@ var industryDiscoveryAnalystSubAgent = {
3074
3103
  " companies, or source projects. Use placeholders that the skill",
3075
3104
  " invocation or consuming project fills in.",
3076
3105
  "5. **Configurable rubric.** The fit rubric \u2014 criteria, weights, and",
3077
- " threshold \u2014 comes from `docs/project-context.md` or the invoking",
3106
+ " threshold \u2014 comes from `docs/src/content/docs/project-context.md` or the invoking",
3078
3107
  " issue body. Never invent weights or pass/fail cutoffs without an",
3079
3108
  " authoritative source.",
3080
3109
  "6. **Planning only.** This pipeline produces candidate lists,",
@@ -3137,7 +3166,7 @@ var industryDiscoveryAnalystSubAgent = {
3137
3166
  "| `<PLANS_DIR>` | Plan files summarizing downstream research (Phase 3) | `<INDUSTRY_ROOT>/plans/` |",
3138
3167
  "| `<DISCOVERY_SLUG>` | Short kebab-case slug identifying one discovery cycle | derived from the scope |",
3139
3168
  "",
3140
- "If `docs/project-context.md` specifies a different industry-discovery",
3169
+ "If `docs/src/content/docs/project-context.md` specifies a different industry-discovery",
3141
3170
  "tree, prefer that. Otherwise fall back to the defaults above.",
3142
3171
  "",
3143
3172
  "---",
@@ -3150,7 +3179,7 @@ var industryDiscoveryAnalystSubAgent = {
3150
3179
  "",
3151
3180
  "1. **Invoking issue body.** If the issue body includes a `## Fit",
3152
3181
  " Rubric` section, use it verbatim.",
3153
- "2. **`docs/project-context.md`.** If the project context file includes",
3182
+ "2. **`docs/src/content/docs/project-context.md`.** If the project context file includes",
3154
3183
  " a `## Industry Fit Rubric` section, use it.",
3155
3184
  "3. **Default scaffold.** If neither source defines a rubric, write a",
3156
3185
  " placeholder rubric with `TODO:` weights and flag the evaluate issue",
@@ -3273,7 +3302,7 @@ var industryDiscoveryAnalystSubAgent = {
3273
3302
  "1. **Read the candidate file** referenced in the issue body.",
3274
3303
  "",
3275
3304
  "2. **Resolve the fit rubric** per the Fit Rubric Convention above.",
3276
- " If neither the invoking issue nor `docs/project-context.md` defines",
3305
+ " If neither the invoking issue nor `docs/src/content/docs/project-context.md` defines",
3277
3306
  " a rubric, emit a scaffold and flag `status:needs-attention` \u2014 do not",
3278
3307
  " silently invent weights or thresholds.",
3279
3308
  "",
@@ -3448,12 +3477,12 @@ var discoverIndustriesSkill = {
3448
3477
  "- `slug: <kebab-case>` \u2014 override the derived discovery slug",
3449
3478
  "- `rubric: inline` \u2014 include an inline `## Fit Rubric` section to use",
3450
3479
  " for Phase 2; otherwise the agent falls back to",
3451
- " `docs/project-context.md` or a scaffold",
3480
+ " `docs/src/content/docs/project-context.md` or a scaffold",
3452
3481
  "- `threshold: <0.0\u20131.0>` \u2014 override the rubric's default threshold",
3453
3482
  "",
3454
3483
  "## Default Paths",
3455
3484
  "",
3456
- "If the project has no override in `docs/project-context.md` or",
3485
+ "If the project has no override in `docs/src/content/docs/project-context.md` or",
3457
3486
  "`agentConfig.rules`, outputs land under:",
3458
3487
  "",
3459
3488
  "- `docs/industries/candidates/<slug>.candidates.md`",
@@ -3706,7 +3735,7 @@ var maintenanceAuditSubAgent = {
3706
3735
  "",
3707
3736
  "| Placeholder | Meaning | Example |",
3708
3737
  "|-------------|---------|---------|",
3709
- "| `<DOCS_ROOT>` | Root of the doc tree being audited | `docs/requirements/`, `docs/adrs/`, `docs/bcm/` |",
3738
+ "| `<DOCS_ROOT>` | Root of the doc tree being audited | `docs/src/content/docs/requirements/`, `docs/src/content/docs/requirements/architectural-decisions/`, `docs/src/content/docs/concepts/` |",
3710
3739
  "| `<REGISTRY_INDEX>` | Registry or index file to check for drift | `<DOCS_ROOT>/_index.md`, `<DOCS_ROOT>/README.md` |",
3711
3740
  "| `<AUDIT_ROOT>` | Where audit reports are written | `docs/maintenance/` |",
3712
3741
  "| `<AUDIT_SLUG>` | Short identifier for this audit scope | e.g. `requirements-xrefs`, `adr-registry`, `bcm-traceability` |",
@@ -3999,10 +4028,10 @@ var maintenanceAuditSkill = {
3999
4028
  "",
4000
4029
  "Where `<scope>` is a short slug plus path for the doc tree to",
4001
4030
  "audit. Examples:",
4002
- "- `requirements-xrefs:docs/requirements/` \u2014 audit requirement",
4031
+ "- `requirements-xrefs:docs/src/content/docs/requirements/` \u2014 audit requirement",
4003
4032
  " traceability links and the category registries",
4004
- "- `adr-registry:docs/adrs/` \u2014 audit the ADR registry index",
4005
- "- `bcm-traceability:docs/bcm/` \u2014 audit BCM capability-model",
4033
+ "- `adr-registry:docs/src/content/docs/requirements/architectural-decisions/` \u2014 audit the ADR registry index",
4034
+ "- `bcm-traceability:docs/src/content/docs/concepts/` \u2014 audit BCM capability-model",
4006
4035
  " cross-references",
4007
4036
  "",
4008
4037
  "The consuming project defines which scopes are valid.",
@@ -5470,7 +5499,7 @@ var peopleProfileAnalystSubAgent = {
5470
5499
  "| `<SOFTWARE_DIR>` | Where existing software profiles live (for cross-references and duplicate detection during followup) | `docs/software/profiles/` |",
5471
5500
  "| `<MEETINGS_DIR>` | Where meeting notes live (for cross-references) | `docs/meetings/` |",
5472
5501
  "",
5473
- "If `docs/project-context.md` specifies a different people-research",
5502
+ "If `docs/src/content/docs/project-context.md` specifies a different people-research",
5474
5503
  "tree or cross-reference target, prefer that. Otherwise fall back to",
5475
5504
  "the defaults above. Cross-reference directories are read-only \u2014 this",
5476
5505
  "agent never writes into them.",
@@ -5485,7 +5514,7 @@ var peopleProfileAnalystSubAgent = {
5485
5514
  "- **Default cadence:** 180 days from the profile's `date` frontmatter.",
5486
5515
  "- **Override:** the invoking issue body may specify a `refresh_days: N`",
5487
5516
  " field, or the consuming project may set a project-wide default in",
5488
- " `docs/project-context.md`.",
5517
+ " `docs/src/content/docs/project-context.md`.",
5489
5518
  "",
5490
5519
  "When the `/profile-person` skill is invoked for a slug that already",
5491
5520
  "has a profile:",
@@ -5920,7 +5949,7 @@ var profilePersonSkill = {
5920
5949
  "",
5921
5950
  "## Default Paths",
5922
5951
  "",
5923
- "If the project has no override in `docs/project-context.md` or",
5952
+ "If the project has no override in `docs/src/content/docs/project-context.md` or",
5924
5953
  "`agentConfig.rules`, outputs land under:",
5925
5954
  "",
5926
5955
  "- `docs/people/notes/<slug>.notes.md`",
@@ -7256,8 +7285,8 @@ var prReviewBundle = {
7256
7285
  "",
7257
7286
  "human-required:",
7258
7287
  " paths:",
7259
- ' - "docs/requirements/architectural-decisions/**"',
7260
- ' - "docs/project-context.md"',
7288
+ ' - "docs/src/content/docs/requirements/architectural-decisions/**"',
7289
+ ' - "docs/src/content/docs/project-context.md"',
7261
7290
  ' - ".github/workflows/**"',
7262
7291
  ' - ".github/CODEOWNERS"',
7263
7292
  ' - ".projenrc.ts"',
@@ -7879,7 +7908,7 @@ var REQ_WRITE_ISSUE_SCHEMA_SECTION = [
7879
7908
  "- **Output Path:** absolute-from-repo-root path ending in",
7880
7909
  " `<PREFIX>-<NNN>-<slug>.md` under the target category directory",
7881
7910
  " (for example,",
7882
- " `docs/requirements/functional/FR-012-checkout-flow.md`).",
7911
+ " `docs/src/content/docs/requirements/functional/FR-012-checkout-flow.md`).",
7883
7912
  "",
7884
7913
  "### Strongly Recommended",
7885
7914
  "",
@@ -7990,12 +8019,12 @@ var requirementsAnalystSubAgent = {
7990
8019
  "",
7991
8020
  "| Placeholder | Meaning | Typical value |",
7992
8021
  "|-------------|---------|---------------|",
7993
- "| `<BCM_DOCS_ROOT>` | Root of BCM model docs (capability models) | `src/content/docs/concepts/` |",
7994
- "| `<COMPETITIVE_ROOT>` | Competitive analysis docs | `src/content/docs/business-strategy/competitive/` |",
7995
- "| `<PRODUCT_ROOT>` | Product roadmap / entity taxonomy | `src/content/docs/product/` |",
7996
- "| `<MEETINGS_ROOT>` | Meeting extracts | `src/content/docs/research/meetings/` |",
7997
- "| `<RESEARCH_REQUIREMENTS_ROOT>` | Scan reports and proposals | `src/content/docs/research/requirements/` |",
7998
- "| `<REQUIREMENTS_ROOT>` | Final requirement documents (owned by requirements-writer) | `src/content/docs/requirements/` |",
8022
+ "| `<BCM_DOCS_ROOT>` | Root of BCM model docs (capability models) | `docs/src/content/docs/concepts/` |",
8023
+ "| `<COMPETITIVE_ROOT>` | Competitive analysis docs | `docs/src/content/docs/business-strategy/competitive/` |",
8024
+ "| `<PRODUCT_ROOT>` | Product roadmap / entity taxonomy | `docs/src/content/docs/product/` |",
8025
+ "| `<MEETINGS_ROOT>` | Meeting extracts | `docs/src/content/docs/research/meetings/` |",
8026
+ "| `<RESEARCH_REQUIREMENTS_ROOT>` | Scan reports and proposals | `docs/src/content/docs/research/requirements/` |",
8027
+ "| `<REQUIREMENTS_ROOT>` | Final requirement documents (owned by requirements-writer) | `docs/src/content/docs/requirements/` |",
7999
8028
  "| `<PREFIX>` | Project-specific requirement ID prefix | e.g. `VRTX`, `ACME` |",
8000
8029
  "",
8001
8030
  "If your project stores these in different locations, substitute accordingly",
@@ -8033,7 +8062,7 @@ var requirementsAnalystSubAgent = {
8033
8062
  "",
8034
8063
  "| Scope | What to read | What to look for |",
8035
8064
  "|-------|-------------|-----------------|",
8036
- "| **BCM model doc** | One `{PREFIX}-NNN` doc under `<BCM_DOCS_ROOT>` | The doc's project-relevance section (commonly `## <Project> Relevance` or `## Strategic Implications`) \u2014 gaps where capabilities exist but no FR/BR/INT addresses them. Use `docs/project-context.md` to judge what is relevant. |",
8065
+ "| **BCM model doc** | One `{PREFIX}-NNN` doc under `<BCM_DOCS_ROOT>` | The doc's project-relevance section (commonly `## <Project> Relevance` or `## Strategic Implications`) \u2014 gaps where capabilities exist but no FR/BR/INT addresses them. Use `docs/src/content/docs/project-context.md` to judge what is relevant. |",
8037
8066
  "| **Competitive analysis** | One `comp-*.md` doc under `<COMPETITIVE_ROOT>` | Feature comparison gaps \u2014 competitor features the product lacks requirements for |",
8038
8067
  "| **Product roadmap** | `<PRODUCT_ROOT>/prioritized-feature-roadmap.md` | Roadmap items without corresponding FRs |",
8039
8068
  "| **Entity taxonomy** | `<PRODUCT_ROOT>/entity-taxonomy.md` | Entities without CRUD requirements (FR), data requirements (DR), or security requirements (SEC) |",
@@ -8296,7 +8325,7 @@ var requirementsAnalystSubAgent = {
8296
8325
  "",
8297
8326
  "| Direction | Agent | What |",
8298
8327
  "|-----------|-------|------|",
8299
- "| Upstream | BCM Writer | Scans capability-model docs for project-relevance gaps (judged against `docs/project-context.md`) |",
8328
+ "| Upstream | BCM Writer | Scans capability-model docs for project-relevance gaps (judged against `docs/src/content/docs/project-context.md`) |",
8300
8329
  "| Upstream | Company Research | Scans competitive analysis for feature comparison gaps |",
8301
8330
  "| Upstream | Meeting Analyst | Scans meeting extracts for requirement proposals |",
8302
8331
  "| Downstream | `requirements-writer` | Picks up the `type:requirement` + `req:write` issues this agent creates and drafts the actual requirement document |",
@@ -10209,7 +10238,7 @@ This reference provides detailed guidance on the standards and frameworks that i
10209
10238
 
10210
10239
  ## Tier-Specific Standards Guidance
10211
10240
 
10212
- The four architectural tiers (Platform, Industry, Customer Workflow, Consumer Application) influence which standards are most relevant when writing requirements. The tier names below are the bundle defaults \u2014 consuming projects may rename or reduce the tier set in their own \`docs/project-context.md\`.
10241
+ The four architectural tiers (Platform, Industry, Customer Workflow, Consumer Application) influence which standards are most relevant when writing requirements. The tier names below are the bundle defaults \u2014 consuming projects may rename or reduce the tier set in their own \`docs/src/content/docs/project-context.md\`.
10213
10242
 
10214
10243
  ### Platform Tier
10215
10244
  All category-specific standards apply at their full depth. Platform requirements define the core infrastructure that all other tiers depend on. Pay particular attention to:
@@ -10350,18 +10379,18 @@ var requirementsWriterSubAgent = {
10350
10379
  "",
10351
10380
  "The pipeline uses these placeholders. Consuming projects override the",
10352
10381
  "defaults by passing paths in the `/write-requirement` skill",
10353
- "invocation, by recording overrides in `docs/project-context.md`, or",
10382
+ "invocation, by recording overrides in `docs/src/content/docs/project-context.md`, or",
10354
10383
  "by extending this rule in their own `agentConfig.rules`.",
10355
10384
  "",
10356
10385
  "| Placeholder | Meaning | Default |",
10357
10386
  "|-------------|---------|---------|",
10358
- "| `<REQUIREMENTS_ROOT>` | Root folder for final requirement documents | `docs/requirements/` |",
10387
+ "| `<REQUIREMENTS_ROOT>` | Root folder for final requirement documents | `docs/src/content/docs/requirements/` |",
10359
10388
  "| `<RESEARCH_REQUIREMENTS_ROOT>` | Where the upstream `requirements-analyst` writes proposals | `docs/research/requirements/` |",
10360
10389
  `| \`<TEMPLATES_ROOT>\` | Where the category templates ship (set automatically by this bundle) | \`${REQUIREMENTS_WRITER_PATHS.templatesRoot}\` |`,
10361
10390
  `| \`<STANDARDS_REF>\` | Standards & frameworks reference document | \`${REQUIREMENTS_WRITER_PATHS.standardsRef}\` |`,
10362
- "| `<PREFIX>` | Project-specific requirement ID prefix | none \u2014 requirement IDs use the category prefix (`BR`, `FR`, \u2026) unless `docs/project-context.md` defines a project prefix |",
10391
+ "| `<PREFIX>` | Project-specific requirement ID prefix | none \u2014 requirement IDs use the category prefix (`BR`, `FR`, \u2026) unless `docs/src/content/docs/project-context.md` defines a project prefix |",
10363
10392
  "",
10364
- "If `docs/project-context.md` specifies a different requirements tree,",
10393
+ "If `docs/src/content/docs/project-context.md` specifies a different requirements tree,",
10365
10394
  "prefer that. Otherwise fall back to the defaults above.",
10366
10395
  "",
10367
10396
  "---",
@@ -10382,7 +10411,7 @@ var requirementsWriterSubAgent = {
10382
10411
  'Tier is **orthogonal** to category \u2014 category answers "what kind"',
10383
10412
  'while tier answers "where in the architecture." The tier names below',
10384
10413
  "are the bundle defaults; consuming projects may rename or reduce the",
10385
- "tier set in their own `docs/project-context.md`.",
10414
+ "tier set in their own `docs/src/content/docs/project-context.md`.",
10386
10415
  "",
10387
10416
  ...REQUIREMENTS_TIER_TABLE_SECTION,
10388
10417
  "",
@@ -10519,7 +10548,7 @@ var requirementsWriterSubAgent = {
10519
10548
  "",
10520
10549
  "- **PREFIX** \u2014 category abbreviation (`BR`, `FR`, `NFR`, `TR`,",
10521
10550
  " `ADR`, `SEC`, `DR`, `INT`, `OPS`, `UX`, `MT`). If the project",
10522
- " declares a project-wide prefix in `docs/project-context.md`, use",
10551
+ " declares a project-wide prefix in `docs/src/content/docs/project-context.md`, use",
10523
10552
  " it instead.",
10524
10553
  "- **NNN** \u2014 three-digit sequential number (001, 002, 012). Always",
10525
10554
  " check the target category directory under `<REQUIREMENTS_ROOT>`",
@@ -10791,7 +10820,7 @@ var requirementsWriterSubAgent = {
10791
10820
  "",
10792
10821
  "7. **Set frontmatter.** At minimum: `title`, `description`, `tier`.",
10793
10822
  " If the project declares optional frontmatter conventions in",
10794
- " `docs/project-context.md` (such as `referencedIn.meetings[]`),",
10823
+ " `docs/src/content/docs/project-context.md` (such as `referencedIn.meetings[]`),",
10795
10824
  " honor them. Otherwise stop at the minimum.",
10796
10825
  "",
10797
10826
  "8. **Update the category index.** If the category directory has a",
@@ -10929,7 +10958,7 @@ var writeRequirementSkill = {
10929
10958
  "- `tier: platform | industry | customer-workflow | consumer-app` \u2014",
10930
10959
  " the architectural tier (default: `platform`)",
10931
10960
  "- `prefix: <PROJECT_PREFIX>` \u2014 override the default category prefix",
10932
- " with a project-specific one declared in `docs/project-context.md`",
10961
+ " with a project-specific one declared in `docs/src/content/docs/project-context.md`",
10933
10962
  "- `customer: <link-or-slug>` \u2014 link the requirement to a customer",
10934
10963
  " profile (expected for Customer Workflow / Consumer Application",
10935
10964
  " tiers in projects that track customer profiles)",
@@ -10940,12 +10969,12 @@ var writeRequirementSkill = {
10940
10969
  "",
10941
10970
  "## Default Paths",
10942
10971
  "",
10943
- "If the project has no override in `docs/project-context.md` or",
10972
+ "If the project has no override in `docs/src/content/docs/project-context.md` or",
10944
10973
  "`agentConfig.rules`, outputs land under:",
10945
10974
  "",
10946
- "- `docs/requirements/<category-dir>/<PREFIX>-<NNN>-<slug>.md`",
10947
- "- `docs/requirements/<category-dir>/README.md` (registry update)",
10948
- "- `docs/requirements/README.md` (top-level README, generated on",
10975
+ "- `docs/src/content/docs/requirements/<category-dir>/<PREFIX>-<NNN>-<slug>.md`",
10976
+ "- `docs/src/content/docs/requirements/<category-dir>/README.md` (registry update)",
10977
+ "- `docs/src/content/docs/requirements/README.md` (top-level README, generated on",
10949
10978
  " first use only)",
10950
10979
  "",
10951
10980
  "Templates and the standards reference ship with this skill under",
@@ -11171,18 +11200,18 @@ var requirementsReviewerSubAgent = {
11171
11200
  "",
11172
11201
  "The pipeline uses these placeholders. Consuming projects override",
11173
11202
  "the defaults by passing paths in the `/review-requirements` skill",
11174
- "invocation, by recording overrides in `docs/project-context.md`, or",
11203
+ "invocation, by recording overrides in `docs/src/content/docs/project-context.md`, or",
11175
11204
  "by extending this rule in their own `agentConfig.rules`.",
11176
11205
  "",
11177
11206
  "| Placeholder | Meaning | Default |",
11178
11207
  "|-------------|---------|---------|",
11179
- "| `<REQUIREMENTS_ROOT>` | Root folder for final requirement documents | `docs/requirements/` |",
11208
+ "| `<REQUIREMENTS_ROOT>` | Root folder for final requirement documents | `docs/src/content/docs/requirements/` |",
11180
11209
  "| `<REVIEW_REPORTS_ROOT>` | Where review reports are written | `docs/research/reviews/` |",
11181
11210
  `| \`<TEMPLATES_ROOT>\` | Where the writer bundle ships category templates (read-only for this agent) | \`${REQUIREMENTS_WRITER_PATHS.templatesRoot}\` |`,
11182
11211
  `| \`<STANDARDS_REF>\` | Standards & frameworks reference shipped by the writer bundle | \`${REQUIREMENTS_WRITER_PATHS.standardsRef}\` |`,
11183
11212
  "| `<STALE_PROPOSED_THRESHOLD_DAYS>` | Age (in days) after which a `Proposed` ADR/TR is flagged as a stale decision by Check 12 | `14` |",
11184
11213
  "",
11185
- "If `docs/project-context.md` specifies a different requirements",
11214
+ "If `docs/src/content/docs/project-context.md` specifies a different requirements",
11186
11215
  "tree, prefer that. Otherwise fall back to the defaults above.",
11187
11216
  "",
11188
11217
  "---",
@@ -11241,7 +11270,7 @@ var requirementsReviewerSubAgent = {
11241
11270
  "- YAML frontmatter present with `title` and `description` fields",
11242
11271
  "- Title in frontmatter matches the `# Heading` line",
11243
11272
  "- File name follows `{PREFIX}-{NNN}-{slug}.md` (or the project",
11244
- " prefix declared in `docs/project-context.md`)",
11273
+ " prefix declared in `docs/src/content/docs/project-context.md`)",
11245
11274
  "- File is in the correct category directory under",
11246
11275
  " `<REQUIREMENTS_ROOT>`",
11247
11276
  "- `Status` field is set to one of the valid values: `Draft`,",
@@ -11273,7 +11302,7 @@ var requirementsReviewerSubAgent = {
11273
11302
  "",
11274
11303
  "Check that the requirement dependency graph is connected. Apply",
11275
11304
  "these expectations as defaults; override them when the project's",
11276
- "`docs/project-context.md` defines a different traceability shape:",
11305
+ "`docs/src/content/docs/project-context.md` defines a different traceability shape:",
11277
11306
  "",
11278
11307
  "- Every FR should trace back to at least one BR (via",
11279
11308
  ' "Implements")',
@@ -11342,7 +11371,7 @@ var requirementsReviewerSubAgent = {
11342
11371
  " integration shape?)",
11343
11372
  "- **Staleness** \u2014 Are statuses up to date? Are there `Draft`",
11344
11373
  " documents that should have progressed?",
11345
- "- **Naming consistency** \u2014 When `docs/project-context.md` declares",
11374
+ "- **Naming consistency** \u2014 When `docs/src/content/docs/project-context.md` declares",
11346
11375
  " a project name or product name, verify it is used consistently",
11347
11376
  " across documents.",
11348
11377
  "",
@@ -11411,7 +11440,7 @@ var requirementsReviewerSubAgent = {
11411
11440
  "Verify that every document has a valid tier classification. The",
11412
11441
  "default tier set is `platform`, `industry`, `customer-workflow`,",
11413
11442
  "`consumer-app`; consuming projects may rename or reduce the tier",
11414
- "set in their own `docs/project-context.md`.",
11443
+ "set in their own `docs/src/content/docs/project-context.md`.",
11415
11444
  "",
11416
11445
  "- `tier` field is set in YAML frontmatter (one of the project's",
11417
11446
  " declared tier slugs)",
@@ -11461,7 +11490,7 @@ var requirementsReviewerSubAgent = {
11461
11490
  "### 11. Cross-Referencing Convention Compliance",
11462
11491
  "",
11463
11492
  "Verify alignment with the project's cross-referencing conventions",
11464
- "(usually documented in `docs/project-context.md` or a profile",
11493
+ "(usually documented in `docs/src/content/docs/project-context.md` or a profile",
11465
11494
  "registry index):",
11466
11495
  "",
11467
11496
  "- Requirements that reference profiled organizations use the",
@@ -11506,7 +11535,7 @@ var requirementsReviewerSubAgent = {
11506
11535
  "",
11507
11536
  "The threshold placeholder `<STALE_PROPOSED_THRESHOLD_DAYS>` is",
11508
11537
  "configurable \u2014 override it in the `req:review` issue body, in",
11509
- "`docs/project-context.md`, or via `agentConfig.rules`. The default",
11538
+ "`docs/src/content/docs/project-context.md`, or via `agentConfig.rules`. The default",
11510
11539
  "of 14 days sits above the orchestrator's existing 72h / 168h stale",
11511
11540
  "thresholds for `status:in-progress` / `status:blocked` and fits",
11512
11541
  "the pace at which architectural decisions are typically ratified.",
@@ -11917,7 +11946,7 @@ var requirementsReviewerSubAgent = {
11917
11946
  "",
11918
11947
  "- **Targets** \u2014 one or more requirement IDs or paths to deprecate",
11919
11948
  " (for example, `ADR-007-auth-provider.md` or",
11920
- " `docs/requirements/architecture/ADR-007-auth-provider.md`).",
11949
+ " `docs/src/content/docs/requirements/architecture/ADR-007-auth-provider.md`).",
11921
11950
  "- **Transition** \u2014 per target, either `Deprecated` (no successor)",
11922
11951
  " or `Superseded-by: <path>` (where `<path>` is the relative path",
11923
11952
  " or requirement ID of the replacement document). When the",
@@ -12097,7 +12126,7 @@ var requirementsReviewerSubAgent = {
12097
12126
  " deprecation follow-up must cite the referencing document path and",
12098
12127
  " the line(s) that mention the deprecated ID.",
12099
12128
  "- **Do not invent traceability rules.** Use the defaults documented",
12100
- " above unless the project's `docs/project-context.md` declares a",
12129
+ " above unless the project's `docs/src/content/docs/project-context.md` declares a",
12101
12130
  " different traceability shape.",
12102
12131
  "- **Audits >10 documents must use a verification script.** Manual",
12103
12132
  " review of large sets always misses broken links."
@@ -12154,7 +12183,7 @@ var reviewRequirementsSkill = {
12154
12183
  "",
12155
12184
  "## Default Paths",
12156
12185
  "",
12157
- "If the project has no override in `docs/project-context.md` or",
12186
+ "If the project has no override in `docs/src/content/docs/project-context.md` or",
12158
12187
  "`agentConfig.rules`, outputs land under:",
12159
12188
  "",
12160
12189
  "- `docs/research/reviews/review-<scope>-YYYY-MM-DD.md` \u2014 the",
@@ -12337,7 +12366,7 @@ var requirementsReviewerBundle = {
12337
12366
  "Check 12 flags ADR and TR documents that have carried",
12338
12367
  "`Status: Proposed` longer than",
12339
12368
  "`<STALE_PROPOSED_THRESHOLD_DAYS>` days (default 14, configurable",
12340
- "via the `req:review` issue body, `docs/project-context.md`, or",
12369
+ "via the `req:review` issue body, `docs/src/content/docs/project-context.md`, or",
12341
12370
  "`agentConfig.rules`). Stale decisions are reported in a separate",
12342
12371
  "**Stale decisions** section of the review report and trigger one",
12343
12372
  "aggregated `req:review` follow-up issue labeled",
@@ -12530,7 +12559,7 @@ var researchAnalystSubAgent = {
12530
12559
  "| `<RESEARCH_SLUG>` | Short kebab-case slug identifying one research cycle | derived from the question |",
12531
12560
  "| `<N>` | Number of slices (default 4, max 8) | `4` |",
12532
12561
  "",
12533
- "If `docs/project-context.md` specifies a different research tree,",
12562
+ "If `docs/src/content/docs/project-context.md` specifies a different research tree,",
12534
12563
  "prefer that. Otherwise fall back to the defaults above.",
12535
12564
  "",
12536
12565
  "---",
@@ -12820,7 +12849,7 @@ var researchSkill = {
12820
12849
  "",
12821
12850
  "## Default Paths",
12822
12851
  "",
12823
- "If the project has no override in `docs/project-context.md` or",
12852
+ "If the project has no override in `docs/src/content/docs/project-context.md` or",
12824
12853
  "`agentConfig.rules`, outputs land under:",
12825
12854
  "",
12826
12855
  "- `docs/research/scopes/<slug>.scope.md`",
@@ -13110,7 +13139,7 @@ var softwareProfileAnalystSubAgent = {
13110
13139
  "4. **Generic over specific.** No hardcoded product types, feature",
13111
13140
  " taxonomies, or segment assumptions. Use the generic software-type",
13112
13141
  " taxonomy below and let consuming projects override it via their",
13113
- " `docs/project-context.md` or `agentConfig.rules`.",
13142
+ " `docs/src/content/docs/project-context.md` or `agentConfig.rules`.",
13114
13143
  "5. **Cite everything.** Every non-trivial factual claim in the",
13115
13144
  " profile must carry a source citation (URL plus access date).",
13116
13145
  "6. **Follow-up, don't widen scope.** If the session turns up adjacent",
@@ -13122,7 +13151,7 @@ var softwareProfileAnalystSubAgent = {
13122
13151
  " products stay inside this pipeline via `software:research`",
13123
13152
  " issues.",
13124
13153
  "7. **Segment weights live in project context.** Segment-importance",
13125
- " weights belong in `docs/project-context.md` (or an override",
13154
+ " weights belong in `docs/src/content/docs/project-context.md` (or an override",
13126
13155
  " passed in the issue body). This agent reads them; it never",
13127
13156
  " invents them.",
13128
13157
  "",
@@ -13157,14 +13186,14 @@ var softwareProfileAnalystSubAgent = {
13157
13186
  "the project's own strategy; features that serve high-weight segments",
13158
13187
  "rank higher in the matrix.",
13159
13188
  "",
13160
- "**Convention:** segment weights live in `docs/project-context.md`",
13189
+ "**Convention:** segment weights live in `docs/src/content/docs/project-context.md`",
13161
13190
  "under a `## Segment Weights` section. The format is a simple",
13162
13191
  "markdown table with `segment` and `weight` columns. Weights are",
13163
13192
  "non-negative numbers; the scale is project-defined (0\u20131, 0\u201310, and",
13164
13193
  "0\u2013100 are all valid as long as the project is internally",
13165
13194
  "consistent).",
13166
13195
  "",
13167
- "Example `docs/project-context.md` fragment:",
13196
+ "Example `docs/src/content/docs/project-context.md` fragment:",
13168
13197
  "",
13169
13198
  "```markdown",
13170
13199
  "## Segment Weights",
@@ -13177,7 +13206,7 @@ var softwareProfileAnalystSubAgent = {
13177
13206
  "| hobbyist | 0.5 |",
13178
13207
  "```",
13179
13208
  "",
13180
- "If `docs/project-context.md` does not define segment weights,",
13209
+ "If `docs/src/content/docs/project-context.md` does not define segment weights,",
13181
13210
  "**do not invent them**. Either:",
13182
13211
  "",
13183
13212
  "- Accept an `weights:` override in the invoking issue body, or",
@@ -13239,7 +13268,7 @@ var softwareProfileAnalystSubAgent = {
13239
13268
  "| `<COMPANY_PROFILES_DIR>` | Where existing company profiles live (for duplicate detection during followup) | `docs/companies/profiles/` |",
13240
13269
  "| `<PEOPLE_PROFILES_DIR>` | Where existing people profiles live (for duplicate detection during followup) | `docs/people/profiles/` |",
13241
13270
  "",
13242
- "If `docs/project-context.md` specifies a different software-research",
13271
+ "If `docs/src/content/docs/project-context.md` specifies a different software-research",
13243
13272
  "tree (for example by reusing the research-pipeline deliverables",
13244
13273
  "folder), prefer that. Otherwise fall back to the defaults above.",
13245
13274
  "",
@@ -13419,7 +13448,7 @@ var softwareProfileAnalystSubAgent = {
13419
13448
  "4. **Create the `software:matrix` issue** with",
13420
13449
  " `Depends on: #<profile-issue>`. Its body references the profile",
13421
13450
  " path, the matrix file path, and the segment-weights source",
13422
- " (`docs/project-context.md` or an explicit override).",
13451
+ " (`docs/src/content/docs/project-context.md` or an explicit override).",
13423
13452
  "",
13424
13453
  "5. **Commit and push** the profile file. Close the profile issue.",
13425
13454
  "",
@@ -13443,7 +13472,7 @@ var softwareProfileAnalystSubAgent = {
13443
13472
  "```markdown",
13444
13473
  "---",
13445
13474
  'title: "Software Feature Matrix"',
13446
- "weights_source: docs/project-context.md#segment-weights",
13475
+ "weights_source: docs/src/content/docs/project-context.md#segment-weights",
13447
13476
  "updated: YYYY-MM-DD",
13448
13477
  "---",
13449
13478
  "",
@@ -13465,12 +13494,12 @@ var softwareProfileAnalystSubAgent = {
13465
13494
  "score = \u03A3 (coverage[segment] * weight[segment])",
13466
13495
  "```",
13467
13496
  "",
13468
- "using the weights loaded from `docs/project-context.md`.",
13497
+ "using the weights loaded from `docs/src/content/docs/project-context.md`.",
13469
13498
  "",
13470
13499
  "### Steps",
13471
13500
  "",
13472
13501
  "1. **Load segment weights.** Read `## Segment Weights` from",
13473
- " `docs/project-context.md`. If absent, fall back to the",
13502
+ " `docs/src/content/docs/project-context.md`. If absent, fall back to the",
13474
13503
  " `weights:` override in the issue body, or the single-segment",
13475
13504
  " default described in `## Segment-Importance Weights` above.",
13476
13505
  "",
@@ -13655,7 +13684,7 @@ var softwareProfileAnalystSubAgent = {
13655
13684
  "- **Cite everything.** Profile claims without source citations do not",
13656
13685
  " belong in the deliverable.",
13657
13686
  "- **No invented weights.** Segment weights come from",
13658
- " `docs/project-context.md` or an explicit issue-body override. If",
13687
+ " `docs/src/content/docs/project-context.md` or an explicit issue-body override. If",
13659
13688
  " neither is available, fall back to the single-segment default and",
13660
13689
  " flag the gap \u2014 never guess.",
13661
13690
  "- **Delegate, don't duplicate.** The vendor company and primary-",
@@ -13708,12 +13737,12 @@ var profileSoftwareSkill = {
13708
13737
  "- `slug: <kebab-case>` \u2014 override the derived product slug",
13709
13738
  "- `weights: <table>` \u2014 override the segment-importance weights for",
13710
13739
  " this profile cycle (otherwise loaded from",
13711
- " `docs/project-context.md`)",
13740
+ " `docs/src/content/docs/project-context.md`)",
13712
13741
  "- `sources: <list>` \u2014 additional authorized sources beyond public web",
13713
13742
  "",
13714
13743
  "## Default Paths",
13715
13744
  "",
13716
- "If the project has no override in `docs/project-context.md` or",
13745
+ "If the project has no override in `docs/src/content/docs/project-context.md` or",
13717
13746
  "`agentConfig.rules`, outputs land under:",
13718
13747
  "",
13719
13748
  "- `docs/software/notes/<slug>.notes.md`",
@@ -13772,7 +13801,7 @@ var softwareProfileBundle = {
13772
13801
  "The pipeline produces **software profiles, research notes, and",
13773
13802
  "rows in a shared feature matrix**. Features are ranked against",
13774
13803
  "segment-importance weights declared in",
13775
- "`docs/project-context.md` under a `## Segment Weights` section.",
13804
+ "`docs/src/content/docs/project-context.md` under a `## Segment Weights` section.",
13776
13805
  "Deeper research on adjacent products surfaced in a profile is",
13777
13806
  "delegated to new cycles of this same pipeline via",
13778
13807
  "`software:followup` issues. Deeper research on the vendor",
@@ -16102,11 +16131,11 @@ function getStarlightRole(sub) {
16102
16131
  function formatLayoutViolation(violation) {
16103
16132
  const { projectName, projectType, outdir, expectedRoot } = violation;
16104
16133
  const expectedExample = expectedRoot === MONOREPO_LAYOUT.DOCS ? "docs/" : `${expectedRoot}/<scope>/<name>`;
16105
- return `[monorepo-layout] ${projectType} "${projectName}" has outdir "${outdir}", which is outside the expected root "${expectedRoot}/" (expected e.g. "${expectedExample}"). See docs/requirements/architectural-decisions/ADR-006-monorepo-layout.md.`;
16134
+ return `[monorepo-layout] ${projectType} "${projectName}" has outdir "${outdir}", which is outside the expected root "${expectedRoot}/" (expected e.g. "${expectedExample}"). See docs/src/content/docs/requirements/architectural-decisions/ADR-006-monorepo-layout.md.`;
16106
16135
  }
16107
16136
  function formatStarlightSingletonViolation(violation) {
16108
16137
  const names = violation.projectNames.map((n) => `"${n}"`).join(", ");
16109
- return `[monorepo-layout] Multiple StarlightProject instances with role: "docs" found (${names}). ADR-006 allows exactly one docs-role Starlight project per MonorepoProject. Either remove the duplicates or set role: "site" on the additional ones so they land under sites/. See docs/requirements/architectural-decisions/ADR-006-monorepo-layout.md.`;
16138
+ return `[monorepo-layout] Multiple StarlightProject instances with role: "docs" found (${names}). ADR-006 allows exactly one docs-role Starlight project per MonorepoProject. Either remove the duplicates or set role: "site" on the additional ones so they land under sites/. See docs/src/content/docs/requirements/architectural-decisions/ADR-006-monorepo-layout.md.`;
16110
16139
  }
16111
16140
  function outdirMatchesRoot(relOutdir, expectedRoot) {
16112
16141
  const segments = relOutdir.split("/").filter((s) => s.length > 0);
@@ -16700,6 +16729,16 @@ var MonorepoProject = class extends TypeScriptAppProject {
16700
16729
  * Default PNPM version to use in the monorepo.
16701
16730
  */
16702
16731
  pnpmVersion: VERSION.PNPM_VERSION,
16732
+ /**
16733
+ * Node.js version used in GitHub Actions workflows (build, upgrade, etc.).
16734
+ * Pinning this inserts an `actions/setup-node` step before dependency
16735
+ * install so CI does not fall back to whatever Node the `ubuntu-latest`
16736
+ * runner ships with (currently Node 20.x, which is below the floor
16737
+ * required by Astro 6 / Starlight).
16738
+ *
16739
+ * @see {@link VERSION.NODE_WORKFLOWS}
16740
+ */
16741
+ workflowNodeVersion: VERSION.NODE_WORKFLOWS,
16703
16742
  /**
16704
16743
  * By default treat as a registry consumer (upgrade workflow syncs configulator).
16705
16744
  */
@@ -16896,7 +16935,10 @@ var MonorepoProject = class extends TypeScriptAppProject {
16896
16935
  const upgradeJob = upgradeWorkflow?.getJob("upgrade");
16897
16936
  const jobWithSteps = upgradeJob && "steps" in upgradeJob ? upgradeJob : void 0;
16898
16937
  if (jobWithSteps?.steps && Array.isArray(jobWithSteps.steps)) {
16899
- const insertIndex = 4;
16938
+ const upgradeStepIndex = jobWithSteps.steps.findIndex(
16939
+ (step) => step.name === "Upgrade dependencies"
16940
+ );
16941
+ const insertIndex = upgradeStepIndex >= 0 ? upgradeStepIndex + 1 : jobWithSteps.steps.length;
16900
16942
  if (this.configulatorRegistryConsumer) {
16901
16943
  jobWithSteps.steps.splice(insertIndex, 0, {
16902
16944
  name: `Sync ${CONFIGULATOR_PACKAGE_NAME} in workspace`,