@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.js CHANGED
@@ -959,7 +959,36 @@ var baseBundle = {
959
959
  "- **Never edit generated files** \u2014 they are marked with `// ~~ Generated by projen`",
960
960
  "- **After modifying Projen configuration**, run `pnpm exec projen` to regenerate files, then `pnpm install` to update the lockfile.",
961
961
  "- **Configure dependencies through Projen** \u2014 never use `npm install`, `pnpm add`, or `yarn add`. Add them to `deps` or `devDeps` in Projen config.",
962
- "- **Export from index.ts** to maintain clean public APIs"
962
+ "- **Export from index.ts** to maintain clean public APIs",
963
+ "",
964
+ "## Repository Layout",
965
+ "",
966
+ "Every monorepo built with `@codedrifters/configulator` uses a fixed",
967
+ "top-level folder layout. Read a sub-project's role directly from its",
968
+ "outdir:",
969
+ "",
970
+ "| Folder | Purpose |",
971
+ "|--------|---------|",
972
+ "| `/docs` | **Single** monorepo-wide Starlight docs site (the one site that lives outside `/sites`). |",
973
+ "| `/apps/@scope/<name>` | Deployable applications (CDK stacks, mobile apps, backend services). |",
974
+ "| `/packages/@scope/<name>` | Shared libraries (published npm packages and workspace-internal libraries). |",
975
+ "| `/sites/@scope/<name>` | User-facing web front ends that are **not** the monorepo-wide docs site. |",
976
+ "",
977
+ "Every sub-project under `apps/`, `packages/`, or `sites/` is named",
978
+ "`@ownerscope/<name>`, where **scope is the owning party** (not a",
979
+ "category). Kind is captured by the top-level folder \u2014 never scope by",
980
+ "category (e.g. `@apps/foo`, `@libs/bar`).",
981
+ "",
982
+ "To place a **new** sub-project, always use a scaffolding skill \u2014 never",
983
+ "hand-roll the path:",
984
+ "",
985
+ "- `/create-package` \u2014 new shared library under `packages/<scope>/<name>`",
986
+ "- `/create-app` \u2014 new deployable app under `apps/<scope>/<name>`",
987
+ "- `/create-site` \u2014 new web front end under `sites/<scope>/<name>`",
988
+ "",
989
+ "The `monorepo-layout` rule documents the full contract (outdir",
990
+ "defaults per project type, the docs-singleton carve-out, synth-time",
991
+ "enforcement)."
963
992
  ].join("\n"),
964
993
  tags: ["project"]
965
994
  },
@@ -1310,8 +1339,8 @@ var baseBundle = {
1310
1339
  "at `/docs`. It is **not** `sites/@scope/docs`.",
1311
1340
  "",
1312
1341
  "- The docs site is monorepo-wide. Sub-project documentation belongs",
1313
- " inside that single site (under `docs/content/`), not in a per-package",
1314
- " `docs/` folder.",
1342
+ " inside that single site (under `docs/src/content/docs/`), not in a",
1343
+ " per-package `docs/` folder.",
1315
1344
  "- Configulator's `StarlightProject` defaults its `outdir` to `/docs` and",
1316
1345
  ' its `role` to `"docs"`. A second `StarlightProject` with `role: "docs"`',
1317
1346
  " fails synth \u2014 the singleton rule is enforced at validate time.",
@@ -1404,7 +1433,7 @@ var baseBundle = {
1404
1433
  };
1405
1434
 
1406
1435
  // src/agent/bundles/project-context.ts
1407
- var PROJECT_CONTEXT_PATH = "docs/project-context.md";
1436
+ var PROJECT_CONTEXT_PATH = "docs/src/content/docs/project-context.md";
1408
1437
  var SUBPROJECT_ROLE_GUIDANCE = [
1409
1438
  "### Sub-project roles",
1410
1439
  "",
@@ -1576,7 +1605,7 @@ var bcmWriterSubAgent = {
1576
1605
  " map rating), L1/L2/L3 decomposition with business-object focus,",
1577
1606
  " and value stream cross-mapping are preserved verbatim. Only",
1578
1607
  " *paths* are parameterized; vocabulary is not.",
1579
- "5. **Project Relevance comes from `docs/project-context.md`.** The",
1608
+ "5. **Project Relevance comes from `docs/src/content/docs/project-context.md`.** The",
1580
1609
  " Project Relevance section of every BCM document is framed against",
1581
1610
  " the mission, target users, and in/out-of-scope capabilities",
1582
1611
  " captured in that file. Never invent project framing.",
@@ -1611,7 +1640,7 @@ var bcmWriterSubAgent = {
1611
1640
  "|-------|-------|-------------|",
1612
1641
  "| `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. |",
1613
1642
  "| `bcm:scaffold` | 2. Scaffold | Create the BCM document with BIZBOK section headings and placeholder content for each attribute. Create the context issue. |",
1614
- "| `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. |",
1643
+ "| `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. |",
1615
1644
  "| `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. |",
1616
1645
  "",
1617
1646
  "All issues also carry `type:bcm-document` and a `status:*` label.",
@@ -1624,7 +1653,7 @@ var bcmWriterSubAgent = {
1624
1653
  "**Shortened paths:**",
1625
1654
  "- **Outline determines the capability is out of scope** (duplicate of",
1626
1655
  " an existing capability, not a business capability, or clearly not",
1627
- " relevant per `docs/project-context.md`) \u2192 outline issue closes with",
1656
+ " relevant per `docs/src/content/docs/project-context.md`) \u2192 outline issue closes with",
1628
1657
  " a justification and no downstream issues are created \u2192 **1",
1629
1658
  " session**.",
1630
1659
  "- **Scaffold reuses an existing BCM document** (the capability turned",
@@ -1648,15 +1677,15 @@ var bcmWriterSubAgent = {
1648
1677
  "",
1649
1678
  "| Placeholder | Meaning | Default |",
1650
1679
  "|-------------|---------|---------|",
1651
- "| `<BCM_DOC_ROOT>` | Root folder for all BCM capability-model documents | `docs/bcm/` |",
1652
- "| `<OUTLINE_ROOT>` | Working-directory root for outline files produced in Phase 1 | `docs/bcm/.outlines/` |",
1680
+ "| `<BCM_DOC_ROOT>` | Root folder for all BCM capability-model documents | `docs/src/content/docs/concepts/` |",
1681
+ "| `<OUTLINE_ROOT>` | Working-directory root for outline files produced in Phase 1 | `docs/src/content/docs/concepts/.outlines/` |",
1653
1682
  "| `<REGISTRY_INDEX>` | Capability registry `_index.md` file that lists every BCM doc | `<BCM_DOC_ROOT>/_index.md` |",
1654
1683
  "| `<CAPABILITY_MAP>` | Capability-map file that shows the L1/L2/L3 hierarchy | `<BCM_DOC_ROOT>/capability-map.md` |",
1655
1684
  "| `<ENTITY_TAXONOMY>` | Entity-taxonomy / product-context file used for business-object alignment | `docs/product/entity-taxonomy.md` |",
1656
1685
  "| `<BCM_SLUG>` | Short kebab-case slug identifying one BCM capability | derived from the capability name |",
1657
- "| `<PREFIX>` | Optional project-specific BCM ID prefix | derived from `docs/project-context.md` if specified |",
1686
+ "| `<PREFIX>` | Optional project-specific BCM ID prefix | derived from `docs/src/content/docs/project-context.md` if specified |",
1658
1687
  "",
1659
- "If `docs/project-context.md` specifies a different BCM tree, prefer",
1688
+ "If `docs/src/content/docs/project-context.md` specifies a different BCM tree, prefer",
1660
1689
  "that. Otherwise fall back to the defaults above.",
1661
1690
  "",
1662
1691
  "---",
@@ -1678,7 +1707,7 @@ var bcmWriterSubAgent = {
1678
1707
  "| **Definition** | 1\u20132 sentences | Describes what the capability is and its boundary \u2014 not how it is implemented. |",
1679
1708
  "| **Outcome** | 1 sentence | The measurable result the capability produces for the business. |",
1680
1709
  "| **Tier** | `L1` / `L2` / `L3` | L1 = top-level domain, L2 = mid-level grouping, L3 = granular capability that maps to one business object. |",
1681
- "| **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. |",
1710
+ "| **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. |",
1682
1711
  "",
1683
1712
  "### L1 / L2 / L3 Decomposition",
1684
1713
  "",
@@ -1706,7 +1735,7 @@ var bcmWriterSubAgent = {
1706
1735
  "- The input/output business objects at each stage",
1707
1736
  "",
1708
1737
  "Value streams are authoritative inputs \u2014 they come from",
1709
- "`docs/project-context.md`, a dedicated value-stream doc under",
1738
+ "`docs/src/content/docs/project-context.md`, a dedicated value-stream doc under",
1710
1739
  "`<BCM_DOC_ROOT>`, or the invoking issue. If no value stream is",
1711
1740
  "defined, write a `TODO: value stream not yet defined` placeholder and",
1712
1741
  "flag the context issue with `status:needs-attention`. Never invent",
@@ -1734,7 +1763,7 @@ var bcmWriterSubAgent = {
1734
1763
  "and write a short outline file that the scaffold phase will use as its",
1735
1764
  "spec.",
1736
1765
  "",
1737
- "**Budget:** Reading the invoking issue, `docs/project-context.md`, the",
1766
+ "**Budget:** Reading the invoking issue, `docs/src/content/docs/project-context.md`, the",
1738
1767
  "capability map, the entity taxonomy, and the registry `_index.md`.",
1739
1768
  "Write one outline file. No BCM document is created in this phase.",
1740
1769
  "",
@@ -1746,7 +1775,7 @@ var bcmWriterSubAgent = {
1746
1775
  " any proposed tier, and any authoritative references (value streams,",
1747
1776
  " existing parents/siblings, source meeting, source requirement).",
1748
1777
  "",
1749
- "2. **Read `docs/project-context.md`** for mission, in/out-of-scope",
1778
+ "2. **Read `docs/src/content/docs/project-context.md`** for mission, in/out-of-scope",
1750
1779
  " capabilities, domain vocabulary, and any BCM-specific overrides",
1751
1780
  " (paths, prefix, heat-map inputs).",
1752
1781
  "",
@@ -1890,7 +1919,7 @@ var bcmWriterSubAgent = {
1890
1919
  " TODO: filled in Phase 3 (Context).",
1891
1920
  "",
1892
1921
  " ## Project Relevance",
1893
- " TODO: filled in Phase 3 (Context) from docs/project-context.md.",
1922
+ " TODO: filled in Phase 3 (Context) from docs/src/content/docs/project-context.md.",
1894
1923
  "",
1895
1924
  " ## Traceability",
1896
1925
  " - **Parent capability:** <parent-slug or `none`>",
@@ -1918,7 +1947,7 @@ var bcmWriterSubAgent = {
1918
1947
  "Roles Involved, and Company Size Applicability \u2014 and append a",
1919
1948
  "revision-history entry.",
1920
1949
  "",
1921
- "**Budget:** Read the scaffold, `docs/project-context.md`, the value",
1950
+ "**Budget:** Read the scaffold, `docs/src/content/docs/project-context.md`, the value",
1922
1951
  "stream source, and the entity taxonomy. Targeted research only \u2014",
1923
1952
  "enough to fill each section with cited facts. Do not open downstream",
1924
1953
  "issues in this phase; that is Phase 4's job.",
@@ -1937,13 +1966,13 @@ var bcmWriterSubAgent = {
1937
1966
  "",
1938
1967
  "1. **Read the scaffolded BCM document** referenced in the issue body.",
1939
1968
  "",
1940
- "2. **Read `docs/project-context.md`** for mission, target users,",
1969
+ "2. **Read `docs/src/content/docs/project-context.md`** for mission, target users,",
1941
1970
  " in/out-of-scope capabilities, and key stakeholders \u2014 this is the",
1942
1971
  " authoritative source for the Project Relevance section.",
1943
1972
  "",
1944
1973
  "3. **Resolve the value stream.** Find the value-stream source named in",
1945
1974
  " the outline or the issue body. If none is provided, check",
1946
- " `docs/project-context.md` and `<BCM_DOC_ROOT>` for a value-stream",
1975
+ " `docs/src/content/docs/project-context.md` and `<BCM_DOC_ROOT>` for a value-stream",
1947
1976
  " doc. If still unresolved, write a `TODO: value stream not yet",
1948
1977
  " defined` placeholder and flag the context issue with",
1949
1978
  " `status:needs-attention`.",
@@ -1956,7 +1985,7 @@ var bcmWriterSubAgent = {
1956
1985
  "5. **Fill `## Company Size Applicability`.** Indicate whether this",
1957
1986
  " capability applies to `small`, `medium`, `large`, or `enterprise`",
1958
1987
  " organizations, with a one-line rationale each. Source from",
1959
- " `docs/project-context.md` target users when possible.",
1988
+ " `docs/src/content/docs/project-context.md` target users when possible.",
1960
1989
  "",
1961
1990
  "6. **Fill `## Enabling Software Systems`.** List the software systems",
1962
1991
  " (internal or external) that enable this capability. Reference",
@@ -1974,7 +2003,7 @@ var bcmWriterSubAgent = {
1974
2003
  " ```",
1975
2004
  "",
1976
2005
  "8. **Fill `## Project Relevance`.** Frame the capability against",
1977
- " `docs/project-context.md`:",
2006
+ " `docs/src/content/docs/project-context.md`:",
1978
2007
  " - Which in-scope capability does this match (or overlap with)?",
1979
2008
  " - Which mission pillar does it support?",
1980
2009
  " - Which target-user role benefits from it?",
@@ -2153,13 +2182,13 @@ var writeBcmSkill = {
2153
2182
  "",
2154
2183
  "## Default Paths",
2155
2184
  "",
2156
- "If the project has no override in `docs/project-context.md` or",
2185
+ "If the project has no override in `docs/src/content/docs/project-context.md` or",
2157
2186
  "`agentConfig.rules`, outputs land under:",
2158
2187
  "",
2159
- "- `docs/bcm/.outlines/<slug>.outline.md` (Phase 1)",
2160
- "- `docs/bcm/<slug>.md` (Phases 2\u20134)",
2161
- "- `docs/bcm/_index.md` (Phase 4, registry update)",
2162
- "- `docs/bcm/capability-map.md` (Phase 4, capability-map update)",
2188
+ "- `docs/src/content/docs/concepts/.outlines/<slug>.outline.md` (Phase 1)",
2189
+ "- `docs/src/content/docs/concepts/<slug>.md` (Phases 2\u20134)",
2190
+ "- `docs/src/content/docs/concepts/_index.md` (Phase 4, registry update)",
2191
+ "- `docs/src/content/docs/concepts/capability-map.md` (Phase 4, capability-map update)",
2163
2192
  "",
2164
2193
  "## Steps",
2165
2194
  "",
@@ -2382,7 +2411,7 @@ var companyProfileAnalystSubAgent = {
2382
2411
  "| `<PEOPLE_PROFILES_DIR>` | Where existing people profiles live (for duplicate detection during followup) | `docs/people/profiles/` |",
2383
2412
  "| `<SOFTWARE_PROFILES_DIR>` | Where existing software profiles live (for duplicate detection during followup) | `docs/software/profiles/` |",
2384
2413
  "",
2385
- "If `docs/project-context.md` specifies a different company-research",
2414
+ "If `docs/src/content/docs/project-context.md` specifies a different company-research",
2386
2415
  "tree (for example by reusing the research-pipeline deliverables",
2387
2416
  "folder), prefer that. Otherwise fall back to the defaults above.",
2388
2417
  "",
@@ -2732,7 +2761,7 @@ var profileCompanySkill = {
2732
2761
  "",
2733
2762
  "## Default Paths",
2734
2763
  "",
2735
- "If the project has no override in `docs/project-context.md` or",
2764
+ "If the project has no override in `docs/src/content/docs/project-context.md` or",
2736
2765
  "`agentConfig.rules`, outputs land under:",
2737
2766
  "",
2738
2767
  "- `docs/companies/notes/<slug>.notes.md`",
@@ -3139,7 +3168,7 @@ var industryDiscoveryAnalystSubAgent = {
3139
3168
  "the consuming project sells, which industries matter, or what the",
3140
3169
  "scoring rubric should weight. All domain-specific vocabulary, scoring",
3141
3170
  "inputs, output locations, and threshold values come from the invoking",
3142
- "issue body, `docs/project-context.md`, or the consuming project's",
3171
+ "issue body, `docs/src/content/docs/project-context.md`, or the consuming project's",
3143
3172
  "configuration.",
3144
3173
  "",
3145
3174
  "Follow your project's shared agent conventions (`AGENTS.md`,",
@@ -3164,7 +3193,7 @@ var industryDiscoveryAnalystSubAgent = {
3164
3193
  " companies, or source projects. Use placeholders that the skill",
3165
3194
  " invocation or consuming project fills in.",
3166
3195
  "5. **Configurable rubric.** The fit rubric \u2014 criteria, weights, and",
3167
- " threshold \u2014 comes from `docs/project-context.md` or the invoking",
3196
+ " threshold \u2014 comes from `docs/src/content/docs/project-context.md` or the invoking",
3168
3197
  " issue body. Never invent weights or pass/fail cutoffs without an",
3169
3198
  " authoritative source.",
3170
3199
  "6. **Planning only.** This pipeline produces candidate lists,",
@@ -3227,7 +3256,7 @@ var industryDiscoveryAnalystSubAgent = {
3227
3256
  "| `<PLANS_DIR>` | Plan files summarizing downstream research (Phase 3) | `<INDUSTRY_ROOT>/plans/` |",
3228
3257
  "| `<DISCOVERY_SLUG>` | Short kebab-case slug identifying one discovery cycle | derived from the scope |",
3229
3258
  "",
3230
- "If `docs/project-context.md` specifies a different industry-discovery",
3259
+ "If `docs/src/content/docs/project-context.md` specifies a different industry-discovery",
3231
3260
  "tree, prefer that. Otherwise fall back to the defaults above.",
3232
3261
  "",
3233
3262
  "---",
@@ -3240,7 +3269,7 @@ var industryDiscoveryAnalystSubAgent = {
3240
3269
  "",
3241
3270
  "1. **Invoking issue body.** If the issue body includes a `## Fit",
3242
3271
  " Rubric` section, use it verbatim.",
3243
- "2. **`docs/project-context.md`.** If the project context file includes",
3272
+ "2. **`docs/src/content/docs/project-context.md`.** If the project context file includes",
3244
3273
  " a `## Industry Fit Rubric` section, use it.",
3245
3274
  "3. **Default scaffold.** If neither source defines a rubric, write a",
3246
3275
  " placeholder rubric with `TODO:` weights and flag the evaluate issue",
@@ -3363,7 +3392,7 @@ var industryDiscoveryAnalystSubAgent = {
3363
3392
  "1. **Read the candidate file** referenced in the issue body.",
3364
3393
  "",
3365
3394
  "2. **Resolve the fit rubric** per the Fit Rubric Convention above.",
3366
- " If neither the invoking issue nor `docs/project-context.md` defines",
3395
+ " If neither the invoking issue nor `docs/src/content/docs/project-context.md` defines",
3367
3396
  " a rubric, emit a scaffold and flag `status:needs-attention` \u2014 do not",
3368
3397
  " silently invent weights or thresholds.",
3369
3398
  "",
@@ -3538,12 +3567,12 @@ var discoverIndustriesSkill = {
3538
3567
  "- `slug: <kebab-case>` \u2014 override the derived discovery slug",
3539
3568
  "- `rubric: inline` \u2014 include an inline `## Fit Rubric` section to use",
3540
3569
  " for Phase 2; otherwise the agent falls back to",
3541
- " `docs/project-context.md` or a scaffold",
3570
+ " `docs/src/content/docs/project-context.md` or a scaffold",
3542
3571
  "- `threshold: <0.0\u20131.0>` \u2014 override the rubric's default threshold",
3543
3572
  "",
3544
3573
  "## Default Paths",
3545
3574
  "",
3546
- "If the project has no override in `docs/project-context.md` or",
3575
+ "If the project has no override in `docs/src/content/docs/project-context.md` or",
3547
3576
  "`agentConfig.rules`, outputs land under:",
3548
3577
  "",
3549
3578
  "- `docs/industries/candidates/<slug>.candidates.md`",
@@ -3796,7 +3825,7 @@ var maintenanceAuditSubAgent = {
3796
3825
  "",
3797
3826
  "| Placeholder | Meaning | Example |",
3798
3827
  "|-------------|---------|---------|",
3799
- "| `<DOCS_ROOT>` | Root of the doc tree being audited | `docs/requirements/`, `docs/adrs/`, `docs/bcm/` |",
3828
+ "| `<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/` |",
3800
3829
  "| `<REGISTRY_INDEX>` | Registry or index file to check for drift | `<DOCS_ROOT>/_index.md`, `<DOCS_ROOT>/README.md` |",
3801
3830
  "| `<AUDIT_ROOT>` | Where audit reports are written | `docs/maintenance/` |",
3802
3831
  "| `<AUDIT_SLUG>` | Short identifier for this audit scope | e.g. `requirements-xrefs`, `adr-registry`, `bcm-traceability` |",
@@ -4089,10 +4118,10 @@ var maintenanceAuditSkill = {
4089
4118
  "",
4090
4119
  "Where `<scope>` is a short slug plus path for the doc tree to",
4091
4120
  "audit. Examples:",
4092
- "- `requirements-xrefs:docs/requirements/` \u2014 audit requirement",
4121
+ "- `requirements-xrefs:docs/src/content/docs/requirements/` \u2014 audit requirement",
4093
4122
  " traceability links and the category registries",
4094
- "- `adr-registry:docs/adrs/` \u2014 audit the ADR registry index",
4095
- "- `bcm-traceability:docs/bcm/` \u2014 audit BCM capability-model",
4123
+ "- `adr-registry:docs/src/content/docs/requirements/architectural-decisions/` \u2014 audit the ADR registry index",
4124
+ "- `bcm-traceability:docs/src/content/docs/concepts/` \u2014 audit BCM capability-model",
4096
4125
  " cross-references",
4097
4126
  "",
4098
4127
  "The consuming project defines which scopes are valid.",
@@ -5560,7 +5589,7 @@ var peopleProfileAnalystSubAgent = {
5560
5589
  "| `<SOFTWARE_DIR>` | Where existing software profiles live (for cross-references and duplicate detection during followup) | `docs/software/profiles/` |",
5561
5590
  "| `<MEETINGS_DIR>` | Where meeting notes live (for cross-references) | `docs/meetings/` |",
5562
5591
  "",
5563
- "If `docs/project-context.md` specifies a different people-research",
5592
+ "If `docs/src/content/docs/project-context.md` specifies a different people-research",
5564
5593
  "tree or cross-reference target, prefer that. Otherwise fall back to",
5565
5594
  "the defaults above. Cross-reference directories are read-only \u2014 this",
5566
5595
  "agent never writes into them.",
@@ -5575,7 +5604,7 @@ var peopleProfileAnalystSubAgent = {
5575
5604
  "- **Default cadence:** 180 days from the profile's `date` frontmatter.",
5576
5605
  "- **Override:** the invoking issue body may specify a `refresh_days: N`",
5577
5606
  " field, or the consuming project may set a project-wide default in",
5578
- " `docs/project-context.md`.",
5607
+ " `docs/src/content/docs/project-context.md`.",
5579
5608
  "",
5580
5609
  "When the `/profile-person` skill is invoked for a slug that already",
5581
5610
  "has a profile:",
@@ -6010,7 +6039,7 @@ var profilePersonSkill = {
6010
6039
  "",
6011
6040
  "## Default Paths",
6012
6041
  "",
6013
- "If the project has no override in `docs/project-context.md` or",
6042
+ "If the project has no override in `docs/src/content/docs/project-context.md` or",
6014
6043
  "`agentConfig.rules`, outputs land under:",
6015
6044
  "",
6016
6045
  "- `docs/people/notes/<slug>.notes.md`",
@@ -7346,8 +7375,8 @@ var prReviewBundle = {
7346
7375
  "",
7347
7376
  "human-required:",
7348
7377
  " paths:",
7349
- ' - "docs/requirements/architectural-decisions/**"',
7350
- ' - "docs/project-context.md"',
7378
+ ' - "docs/src/content/docs/requirements/architectural-decisions/**"',
7379
+ ' - "docs/src/content/docs/project-context.md"',
7351
7380
  ' - ".github/workflows/**"',
7352
7381
  ' - ".github/CODEOWNERS"',
7353
7382
  ' - ".projenrc.ts"',
@@ -7969,7 +7998,7 @@ var REQ_WRITE_ISSUE_SCHEMA_SECTION = [
7969
7998
  "- **Output Path:** absolute-from-repo-root path ending in",
7970
7999
  " `<PREFIX>-<NNN>-<slug>.md` under the target category directory",
7971
8000
  " (for example,",
7972
- " `docs/requirements/functional/FR-012-checkout-flow.md`).",
8001
+ " `docs/src/content/docs/requirements/functional/FR-012-checkout-flow.md`).",
7973
8002
  "",
7974
8003
  "### Strongly Recommended",
7975
8004
  "",
@@ -8080,12 +8109,12 @@ var requirementsAnalystSubAgent = {
8080
8109
  "",
8081
8110
  "| Placeholder | Meaning | Typical value |",
8082
8111
  "|-------------|---------|---------------|",
8083
- "| `<BCM_DOCS_ROOT>` | Root of BCM model docs (capability models) | `src/content/docs/concepts/` |",
8084
- "| `<COMPETITIVE_ROOT>` | Competitive analysis docs | `src/content/docs/business-strategy/competitive/` |",
8085
- "| `<PRODUCT_ROOT>` | Product roadmap / entity taxonomy | `src/content/docs/product/` |",
8086
- "| `<MEETINGS_ROOT>` | Meeting extracts | `src/content/docs/research/meetings/` |",
8087
- "| `<RESEARCH_REQUIREMENTS_ROOT>` | Scan reports and proposals | `src/content/docs/research/requirements/` |",
8088
- "| `<REQUIREMENTS_ROOT>` | Final requirement documents (owned by requirements-writer) | `src/content/docs/requirements/` |",
8112
+ "| `<BCM_DOCS_ROOT>` | Root of BCM model docs (capability models) | `docs/src/content/docs/concepts/` |",
8113
+ "| `<COMPETITIVE_ROOT>` | Competitive analysis docs | `docs/src/content/docs/business-strategy/competitive/` |",
8114
+ "| `<PRODUCT_ROOT>` | Product roadmap / entity taxonomy | `docs/src/content/docs/product/` |",
8115
+ "| `<MEETINGS_ROOT>` | Meeting extracts | `docs/src/content/docs/research/meetings/` |",
8116
+ "| `<RESEARCH_REQUIREMENTS_ROOT>` | Scan reports and proposals | `docs/src/content/docs/research/requirements/` |",
8117
+ "| `<REQUIREMENTS_ROOT>` | Final requirement documents (owned by requirements-writer) | `docs/src/content/docs/requirements/` |",
8089
8118
  "| `<PREFIX>` | Project-specific requirement ID prefix | e.g. `VRTX`, `ACME` |",
8090
8119
  "",
8091
8120
  "If your project stores these in different locations, substitute accordingly",
@@ -8123,7 +8152,7 @@ var requirementsAnalystSubAgent = {
8123
8152
  "",
8124
8153
  "| Scope | What to read | What to look for |",
8125
8154
  "|-------|-------------|-----------------|",
8126
- "| **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. |",
8155
+ "| **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. |",
8127
8156
  "| **Competitive analysis** | One `comp-*.md` doc under `<COMPETITIVE_ROOT>` | Feature comparison gaps \u2014 competitor features the product lacks requirements for |",
8128
8157
  "| **Product roadmap** | `<PRODUCT_ROOT>/prioritized-feature-roadmap.md` | Roadmap items without corresponding FRs |",
8129
8158
  "| **Entity taxonomy** | `<PRODUCT_ROOT>/entity-taxonomy.md` | Entities without CRUD requirements (FR), data requirements (DR), or security requirements (SEC) |",
@@ -8386,7 +8415,7 @@ var requirementsAnalystSubAgent = {
8386
8415
  "",
8387
8416
  "| Direction | Agent | What |",
8388
8417
  "|-----------|-------|------|",
8389
- "| Upstream | BCM Writer | Scans capability-model docs for project-relevance gaps (judged against `docs/project-context.md`) |",
8418
+ "| Upstream | BCM Writer | Scans capability-model docs for project-relevance gaps (judged against `docs/src/content/docs/project-context.md`) |",
8390
8419
  "| Upstream | Company Research | Scans competitive analysis for feature comparison gaps |",
8391
8420
  "| Upstream | Meeting Analyst | Scans meeting extracts for requirement proposals |",
8392
8421
  "| Downstream | `requirements-writer` | Picks up the `type:requirement` + `req:write` issues this agent creates and drafts the actual requirement document |",
@@ -10299,7 +10328,7 @@ This reference provides detailed guidance on the standards and frameworks that i
10299
10328
 
10300
10329
  ## Tier-Specific Standards Guidance
10301
10330
 
10302
- 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\`.
10331
+ 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\`.
10303
10332
 
10304
10333
  ### Platform Tier
10305
10334
  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:
@@ -10440,18 +10469,18 @@ var requirementsWriterSubAgent = {
10440
10469
  "",
10441
10470
  "The pipeline uses these placeholders. Consuming projects override the",
10442
10471
  "defaults by passing paths in the `/write-requirement` skill",
10443
- "invocation, by recording overrides in `docs/project-context.md`, or",
10472
+ "invocation, by recording overrides in `docs/src/content/docs/project-context.md`, or",
10444
10473
  "by extending this rule in their own `agentConfig.rules`.",
10445
10474
  "",
10446
10475
  "| Placeholder | Meaning | Default |",
10447
10476
  "|-------------|---------|---------|",
10448
- "| `<REQUIREMENTS_ROOT>` | Root folder for final requirement documents | `docs/requirements/` |",
10477
+ "| `<REQUIREMENTS_ROOT>` | Root folder for final requirement documents | `docs/src/content/docs/requirements/` |",
10449
10478
  "| `<RESEARCH_REQUIREMENTS_ROOT>` | Where the upstream `requirements-analyst` writes proposals | `docs/research/requirements/` |",
10450
10479
  `| \`<TEMPLATES_ROOT>\` | Where the category templates ship (set automatically by this bundle) | \`${REQUIREMENTS_WRITER_PATHS.templatesRoot}\` |`,
10451
10480
  `| \`<STANDARDS_REF>\` | Standards & frameworks reference document | \`${REQUIREMENTS_WRITER_PATHS.standardsRef}\` |`,
10452
- "| `<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 |",
10481
+ "| `<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 |",
10453
10482
  "",
10454
- "If `docs/project-context.md` specifies a different requirements tree,",
10483
+ "If `docs/src/content/docs/project-context.md` specifies a different requirements tree,",
10455
10484
  "prefer that. Otherwise fall back to the defaults above.",
10456
10485
  "",
10457
10486
  "---",
@@ -10472,7 +10501,7 @@ var requirementsWriterSubAgent = {
10472
10501
  'Tier is **orthogonal** to category \u2014 category answers "what kind"',
10473
10502
  'while tier answers "where in the architecture." The tier names below',
10474
10503
  "are the bundle defaults; consuming projects may rename or reduce the",
10475
- "tier set in their own `docs/project-context.md`.",
10504
+ "tier set in their own `docs/src/content/docs/project-context.md`.",
10476
10505
  "",
10477
10506
  ...REQUIREMENTS_TIER_TABLE_SECTION,
10478
10507
  "",
@@ -10609,7 +10638,7 @@ var requirementsWriterSubAgent = {
10609
10638
  "",
10610
10639
  "- **PREFIX** \u2014 category abbreviation (`BR`, `FR`, `NFR`, `TR`,",
10611
10640
  " `ADR`, `SEC`, `DR`, `INT`, `OPS`, `UX`, `MT`). If the project",
10612
- " declares a project-wide prefix in `docs/project-context.md`, use",
10641
+ " declares a project-wide prefix in `docs/src/content/docs/project-context.md`, use",
10613
10642
  " it instead.",
10614
10643
  "- **NNN** \u2014 three-digit sequential number (001, 002, 012). Always",
10615
10644
  " check the target category directory under `<REQUIREMENTS_ROOT>`",
@@ -10881,7 +10910,7 @@ var requirementsWriterSubAgent = {
10881
10910
  "",
10882
10911
  "7. **Set frontmatter.** At minimum: `title`, `description`, `tier`.",
10883
10912
  " If the project declares optional frontmatter conventions in",
10884
- " `docs/project-context.md` (such as `referencedIn.meetings[]`),",
10913
+ " `docs/src/content/docs/project-context.md` (such as `referencedIn.meetings[]`),",
10885
10914
  " honor them. Otherwise stop at the minimum.",
10886
10915
  "",
10887
10916
  "8. **Update the category index.** If the category directory has a",
@@ -11019,7 +11048,7 @@ var writeRequirementSkill = {
11019
11048
  "- `tier: platform | industry | customer-workflow | consumer-app` \u2014",
11020
11049
  " the architectural tier (default: `platform`)",
11021
11050
  "- `prefix: <PROJECT_PREFIX>` \u2014 override the default category prefix",
11022
- " with a project-specific one declared in `docs/project-context.md`",
11051
+ " with a project-specific one declared in `docs/src/content/docs/project-context.md`",
11023
11052
  "- `customer: <link-or-slug>` \u2014 link the requirement to a customer",
11024
11053
  " profile (expected for Customer Workflow / Consumer Application",
11025
11054
  " tiers in projects that track customer profiles)",
@@ -11030,12 +11059,12 @@ var writeRequirementSkill = {
11030
11059
  "",
11031
11060
  "## Default Paths",
11032
11061
  "",
11033
- "If the project has no override in `docs/project-context.md` or",
11062
+ "If the project has no override in `docs/src/content/docs/project-context.md` or",
11034
11063
  "`agentConfig.rules`, outputs land under:",
11035
11064
  "",
11036
- "- `docs/requirements/<category-dir>/<PREFIX>-<NNN>-<slug>.md`",
11037
- "- `docs/requirements/<category-dir>/README.md` (registry update)",
11038
- "- `docs/requirements/README.md` (top-level README, generated on",
11065
+ "- `docs/src/content/docs/requirements/<category-dir>/<PREFIX>-<NNN>-<slug>.md`",
11066
+ "- `docs/src/content/docs/requirements/<category-dir>/README.md` (registry update)",
11067
+ "- `docs/src/content/docs/requirements/README.md` (top-level README, generated on",
11039
11068
  " first use only)",
11040
11069
  "",
11041
11070
  "Templates and the standards reference ship with this skill under",
@@ -11261,18 +11290,18 @@ var requirementsReviewerSubAgent = {
11261
11290
  "",
11262
11291
  "The pipeline uses these placeholders. Consuming projects override",
11263
11292
  "the defaults by passing paths in the `/review-requirements` skill",
11264
- "invocation, by recording overrides in `docs/project-context.md`, or",
11293
+ "invocation, by recording overrides in `docs/src/content/docs/project-context.md`, or",
11265
11294
  "by extending this rule in their own `agentConfig.rules`.",
11266
11295
  "",
11267
11296
  "| Placeholder | Meaning | Default |",
11268
11297
  "|-------------|---------|---------|",
11269
- "| `<REQUIREMENTS_ROOT>` | Root folder for final requirement documents | `docs/requirements/` |",
11298
+ "| `<REQUIREMENTS_ROOT>` | Root folder for final requirement documents | `docs/src/content/docs/requirements/` |",
11270
11299
  "| `<REVIEW_REPORTS_ROOT>` | Where review reports are written | `docs/research/reviews/` |",
11271
11300
  `| \`<TEMPLATES_ROOT>\` | Where the writer bundle ships category templates (read-only for this agent) | \`${REQUIREMENTS_WRITER_PATHS.templatesRoot}\` |`,
11272
11301
  `| \`<STANDARDS_REF>\` | Standards & frameworks reference shipped by the writer bundle | \`${REQUIREMENTS_WRITER_PATHS.standardsRef}\` |`,
11273
11302
  "| `<STALE_PROPOSED_THRESHOLD_DAYS>` | Age (in days) after which a `Proposed` ADR/TR is flagged as a stale decision by Check 12 | `14` |",
11274
11303
  "",
11275
- "If `docs/project-context.md` specifies a different requirements",
11304
+ "If `docs/src/content/docs/project-context.md` specifies a different requirements",
11276
11305
  "tree, prefer that. Otherwise fall back to the defaults above.",
11277
11306
  "",
11278
11307
  "---",
@@ -11331,7 +11360,7 @@ var requirementsReviewerSubAgent = {
11331
11360
  "- YAML frontmatter present with `title` and `description` fields",
11332
11361
  "- Title in frontmatter matches the `# Heading` line",
11333
11362
  "- File name follows `{PREFIX}-{NNN}-{slug}.md` (or the project",
11334
- " prefix declared in `docs/project-context.md`)",
11363
+ " prefix declared in `docs/src/content/docs/project-context.md`)",
11335
11364
  "- File is in the correct category directory under",
11336
11365
  " `<REQUIREMENTS_ROOT>`",
11337
11366
  "- `Status` field is set to one of the valid values: `Draft`,",
@@ -11363,7 +11392,7 @@ var requirementsReviewerSubAgent = {
11363
11392
  "",
11364
11393
  "Check that the requirement dependency graph is connected. Apply",
11365
11394
  "these expectations as defaults; override them when the project's",
11366
- "`docs/project-context.md` defines a different traceability shape:",
11395
+ "`docs/src/content/docs/project-context.md` defines a different traceability shape:",
11367
11396
  "",
11368
11397
  "- Every FR should trace back to at least one BR (via",
11369
11398
  ' "Implements")',
@@ -11432,7 +11461,7 @@ var requirementsReviewerSubAgent = {
11432
11461
  " integration shape?)",
11433
11462
  "- **Staleness** \u2014 Are statuses up to date? Are there `Draft`",
11434
11463
  " documents that should have progressed?",
11435
- "- **Naming consistency** \u2014 When `docs/project-context.md` declares",
11464
+ "- **Naming consistency** \u2014 When `docs/src/content/docs/project-context.md` declares",
11436
11465
  " a project name or product name, verify it is used consistently",
11437
11466
  " across documents.",
11438
11467
  "",
@@ -11501,7 +11530,7 @@ var requirementsReviewerSubAgent = {
11501
11530
  "Verify that every document has a valid tier classification. The",
11502
11531
  "default tier set is `platform`, `industry`, `customer-workflow`,",
11503
11532
  "`consumer-app`; consuming projects may rename or reduce the tier",
11504
- "set in their own `docs/project-context.md`.",
11533
+ "set in their own `docs/src/content/docs/project-context.md`.",
11505
11534
  "",
11506
11535
  "- `tier` field is set in YAML frontmatter (one of the project's",
11507
11536
  " declared tier slugs)",
@@ -11551,7 +11580,7 @@ var requirementsReviewerSubAgent = {
11551
11580
  "### 11. Cross-Referencing Convention Compliance",
11552
11581
  "",
11553
11582
  "Verify alignment with the project's cross-referencing conventions",
11554
- "(usually documented in `docs/project-context.md` or a profile",
11583
+ "(usually documented in `docs/src/content/docs/project-context.md` or a profile",
11555
11584
  "registry index):",
11556
11585
  "",
11557
11586
  "- Requirements that reference profiled organizations use the",
@@ -11596,7 +11625,7 @@ var requirementsReviewerSubAgent = {
11596
11625
  "",
11597
11626
  "The threshold placeholder `<STALE_PROPOSED_THRESHOLD_DAYS>` is",
11598
11627
  "configurable \u2014 override it in the `req:review` issue body, in",
11599
- "`docs/project-context.md`, or via `agentConfig.rules`. The default",
11628
+ "`docs/src/content/docs/project-context.md`, or via `agentConfig.rules`. The default",
11600
11629
  "of 14 days sits above the orchestrator's existing 72h / 168h stale",
11601
11630
  "thresholds for `status:in-progress` / `status:blocked` and fits",
11602
11631
  "the pace at which architectural decisions are typically ratified.",
@@ -12007,7 +12036,7 @@ var requirementsReviewerSubAgent = {
12007
12036
  "",
12008
12037
  "- **Targets** \u2014 one or more requirement IDs or paths to deprecate",
12009
12038
  " (for example, `ADR-007-auth-provider.md` or",
12010
- " `docs/requirements/architecture/ADR-007-auth-provider.md`).",
12039
+ " `docs/src/content/docs/requirements/architecture/ADR-007-auth-provider.md`).",
12011
12040
  "- **Transition** \u2014 per target, either `Deprecated` (no successor)",
12012
12041
  " or `Superseded-by: <path>` (where `<path>` is the relative path",
12013
12042
  " or requirement ID of the replacement document). When the",
@@ -12187,7 +12216,7 @@ var requirementsReviewerSubAgent = {
12187
12216
  " deprecation follow-up must cite the referencing document path and",
12188
12217
  " the line(s) that mention the deprecated ID.",
12189
12218
  "- **Do not invent traceability rules.** Use the defaults documented",
12190
- " above unless the project's `docs/project-context.md` declares a",
12219
+ " above unless the project's `docs/src/content/docs/project-context.md` declares a",
12191
12220
  " different traceability shape.",
12192
12221
  "- **Audits >10 documents must use a verification script.** Manual",
12193
12222
  " review of large sets always misses broken links."
@@ -12244,7 +12273,7 @@ var reviewRequirementsSkill = {
12244
12273
  "",
12245
12274
  "## Default Paths",
12246
12275
  "",
12247
- "If the project has no override in `docs/project-context.md` or",
12276
+ "If the project has no override in `docs/src/content/docs/project-context.md` or",
12248
12277
  "`agentConfig.rules`, outputs land under:",
12249
12278
  "",
12250
12279
  "- `docs/research/reviews/review-<scope>-YYYY-MM-DD.md` \u2014 the",
@@ -12427,7 +12456,7 @@ var requirementsReviewerBundle = {
12427
12456
  "Check 12 flags ADR and TR documents that have carried",
12428
12457
  "`Status: Proposed` longer than",
12429
12458
  "`<STALE_PROPOSED_THRESHOLD_DAYS>` days (default 14, configurable",
12430
- "via the `req:review` issue body, `docs/project-context.md`, or",
12459
+ "via the `req:review` issue body, `docs/src/content/docs/project-context.md`, or",
12431
12460
  "`agentConfig.rules`). Stale decisions are reported in a separate",
12432
12461
  "**Stale decisions** section of the review report and trigger one",
12433
12462
  "aggregated `req:review` follow-up issue labeled",
@@ -12620,7 +12649,7 @@ var researchAnalystSubAgent = {
12620
12649
  "| `<RESEARCH_SLUG>` | Short kebab-case slug identifying one research cycle | derived from the question |",
12621
12650
  "| `<N>` | Number of slices (default 4, max 8) | `4` |",
12622
12651
  "",
12623
- "If `docs/project-context.md` specifies a different research tree,",
12652
+ "If `docs/src/content/docs/project-context.md` specifies a different research tree,",
12624
12653
  "prefer that. Otherwise fall back to the defaults above.",
12625
12654
  "",
12626
12655
  "---",
@@ -12910,7 +12939,7 @@ var researchSkill = {
12910
12939
  "",
12911
12940
  "## Default Paths",
12912
12941
  "",
12913
- "If the project has no override in `docs/project-context.md` or",
12942
+ "If the project has no override in `docs/src/content/docs/project-context.md` or",
12914
12943
  "`agentConfig.rules`, outputs land under:",
12915
12944
  "",
12916
12945
  "- `docs/research/scopes/<slug>.scope.md`",
@@ -13200,7 +13229,7 @@ var softwareProfileAnalystSubAgent = {
13200
13229
  "4. **Generic over specific.** No hardcoded product types, feature",
13201
13230
  " taxonomies, or segment assumptions. Use the generic software-type",
13202
13231
  " taxonomy below and let consuming projects override it via their",
13203
- " `docs/project-context.md` or `agentConfig.rules`.",
13232
+ " `docs/src/content/docs/project-context.md` or `agentConfig.rules`.",
13204
13233
  "5. **Cite everything.** Every non-trivial factual claim in the",
13205
13234
  " profile must carry a source citation (URL plus access date).",
13206
13235
  "6. **Follow-up, don't widen scope.** If the session turns up adjacent",
@@ -13212,7 +13241,7 @@ var softwareProfileAnalystSubAgent = {
13212
13241
  " products stay inside this pipeline via `software:research`",
13213
13242
  " issues.",
13214
13243
  "7. **Segment weights live in project context.** Segment-importance",
13215
- " weights belong in `docs/project-context.md` (or an override",
13244
+ " weights belong in `docs/src/content/docs/project-context.md` (or an override",
13216
13245
  " passed in the issue body). This agent reads them; it never",
13217
13246
  " invents them.",
13218
13247
  "",
@@ -13247,14 +13276,14 @@ var softwareProfileAnalystSubAgent = {
13247
13276
  "the project's own strategy; features that serve high-weight segments",
13248
13277
  "rank higher in the matrix.",
13249
13278
  "",
13250
- "**Convention:** segment weights live in `docs/project-context.md`",
13279
+ "**Convention:** segment weights live in `docs/src/content/docs/project-context.md`",
13251
13280
  "under a `## Segment Weights` section. The format is a simple",
13252
13281
  "markdown table with `segment` and `weight` columns. Weights are",
13253
13282
  "non-negative numbers; the scale is project-defined (0\u20131, 0\u201310, and",
13254
13283
  "0\u2013100 are all valid as long as the project is internally",
13255
13284
  "consistent).",
13256
13285
  "",
13257
- "Example `docs/project-context.md` fragment:",
13286
+ "Example `docs/src/content/docs/project-context.md` fragment:",
13258
13287
  "",
13259
13288
  "```markdown",
13260
13289
  "## Segment Weights",
@@ -13267,7 +13296,7 @@ var softwareProfileAnalystSubAgent = {
13267
13296
  "| hobbyist | 0.5 |",
13268
13297
  "```",
13269
13298
  "",
13270
- "If `docs/project-context.md` does not define segment weights,",
13299
+ "If `docs/src/content/docs/project-context.md` does not define segment weights,",
13271
13300
  "**do not invent them**. Either:",
13272
13301
  "",
13273
13302
  "- Accept an `weights:` override in the invoking issue body, or",
@@ -13329,7 +13358,7 @@ var softwareProfileAnalystSubAgent = {
13329
13358
  "| `<COMPANY_PROFILES_DIR>` | Where existing company profiles live (for duplicate detection during followup) | `docs/companies/profiles/` |",
13330
13359
  "| `<PEOPLE_PROFILES_DIR>` | Where existing people profiles live (for duplicate detection during followup) | `docs/people/profiles/` |",
13331
13360
  "",
13332
- "If `docs/project-context.md` specifies a different software-research",
13361
+ "If `docs/src/content/docs/project-context.md` specifies a different software-research",
13333
13362
  "tree (for example by reusing the research-pipeline deliverables",
13334
13363
  "folder), prefer that. Otherwise fall back to the defaults above.",
13335
13364
  "",
@@ -13509,7 +13538,7 @@ var softwareProfileAnalystSubAgent = {
13509
13538
  "4. **Create the `software:matrix` issue** with",
13510
13539
  " `Depends on: #<profile-issue>`. Its body references the profile",
13511
13540
  " path, the matrix file path, and the segment-weights source",
13512
- " (`docs/project-context.md` or an explicit override).",
13541
+ " (`docs/src/content/docs/project-context.md` or an explicit override).",
13513
13542
  "",
13514
13543
  "5. **Commit and push** the profile file. Close the profile issue.",
13515
13544
  "",
@@ -13533,7 +13562,7 @@ var softwareProfileAnalystSubAgent = {
13533
13562
  "```markdown",
13534
13563
  "---",
13535
13564
  'title: "Software Feature Matrix"',
13536
- "weights_source: docs/project-context.md#segment-weights",
13565
+ "weights_source: docs/src/content/docs/project-context.md#segment-weights",
13537
13566
  "updated: YYYY-MM-DD",
13538
13567
  "---",
13539
13568
  "",
@@ -13555,12 +13584,12 @@ var softwareProfileAnalystSubAgent = {
13555
13584
  "score = \u03A3 (coverage[segment] * weight[segment])",
13556
13585
  "```",
13557
13586
  "",
13558
- "using the weights loaded from `docs/project-context.md`.",
13587
+ "using the weights loaded from `docs/src/content/docs/project-context.md`.",
13559
13588
  "",
13560
13589
  "### Steps",
13561
13590
  "",
13562
13591
  "1. **Load segment weights.** Read `## Segment Weights` from",
13563
- " `docs/project-context.md`. If absent, fall back to the",
13592
+ " `docs/src/content/docs/project-context.md`. If absent, fall back to the",
13564
13593
  " `weights:` override in the issue body, or the single-segment",
13565
13594
  " default described in `## Segment-Importance Weights` above.",
13566
13595
  "",
@@ -13745,7 +13774,7 @@ var softwareProfileAnalystSubAgent = {
13745
13774
  "- **Cite everything.** Profile claims without source citations do not",
13746
13775
  " belong in the deliverable.",
13747
13776
  "- **No invented weights.** Segment weights come from",
13748
- " `docs/project-context.md` or an explicit issue-body override. If",
13777
+ " `docs/src/content/docs/project-context.md` or an explicit issue-body override. If",
13749
13778
  " neither is available, fall back to the single-segment default and",
13750
13779
  " flag the gap \u2014 never guess.",
13751
13780
  "- **Delegate, don't duplicate.** The vendor company and primary-",
@@ -13798,12 +13827,12 @@ var profileSoftwareSkill = {
13798
13827
  "- `slug: <kebab-case>` \u2014 override the derived product slug",
13799
13828
  "- `weights: <table>` \u2014 override the segment-importance weights for",
13800
13829
  " this profile cycle (otherwise loaded from",
13801
- " `docs/project-context.md`)",
13830
+ " `docs/src/content/docs/project-context.md`)",
13802
13831
  "- `sources: <list>` \u2014 additional authorized sources beyond public web",
13803
13832
  "",
13804
13833
  "## Default Paths",
13805
13834
  "",
13806
- "If the project has no override in `docs/project-context.md` or",
13835
+ "If the project has no override in `docs/src/content/docs/project-context.md` or",
13807
13836
  "`agentConfig.rules`, outputs land under:",
13808
13837
  "",
13809
13838
  "- `docs/software/notes/<slug>.notes.md`",
@@ -13862,7 +13891,7 @@ var softwareProfileBundle = {
13862
13891
  "The pipeline produces **software profiles, research notes, and",
13863
13892
  "rows in a shared feature matrix**. Features are ranked against",
13864
13893
  "segment-importance weights declared in",
13865
- "`docs/project-context.md` under a `## Segment Weights` section.",
13894
+ "`docs/src/content/docs/project-context.md` under a `## Segment Weights` section.",
13866
13895
  "Deeper research on adjacent products surfaced in a profile is",
13867
13896
  "delegated to new cycles of this same pipeline via",
13868
13897
  "`software:followup` issues. Deeper research on the vendor",
@@ -16192,11 +16221,11 @@ function getStarlightRole(sub) {
16192
16221
  function formatLayoutViolation(violation) {
16193
16222
  const { projectName, projectType, outdir, expectedRoot } = violation;
16194
16223
  const expectedExample = expectedRoot === MONOREPO_LAYOUT.DOCS ? "docs/" : `${expectedRoot}/<scope>/<name>`;
16195
- 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.`;
16224
+ 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.`;
16196
16225
  }
16197
16226
  function formatStarlightSingletonViolation(violation) {
16198
16227
  const names = violation.projectNames.map((n) => `"${n}"`).join(", ");
16199
- 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.`;
16228
+ 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.`;
16200
16229
  }
16201
16230
  function outdirMatchesRoot(relOutdir, expectedRoot) {
16202
16231
  const segments = relOutdir.split("/").filter((s) => s.length > 0);
@@ -16781,6 +16810,16 @@ var MonorepoProject = class extends import_typescript3.TypeScriptAppProject {
16781
16810
  * Default PNPM version to use in the monorepo.
16782
16811
  */
16783
16812
  pnpmVersion: VERSION.PNPM_VERSION,
16813
+ /**
16814
+ * Node.js version used in GitHub Actions workflows (build, upgrade, etc.).
16815
+ * Pinning this inserts an `actions/setup-node` step before dependency
16816
+ * install so CI does not fall back to whatever Node the `ubuntu-latest`
16817
+ * runner ships with (currently Node 20.x, which is below the floor
16818
+ * required by Astro 6 / Starlight).
16819
+ *
16820
+ * @see {@link VERSION.NODE_WORKFLOWS}
16821
+ */
16822
+ workflowNodeVersion: VERSION.NODE_WORKFLOWS,
16784
16823
  /**
16785
16824
  * By default treat as a registry consumer (upgrade workflow syncs configulator).
16786
16825
  */
@@ -16977,7 +17016,10 @@ var MonorepoProject = class extends import_typescript3.TypeScriptAppProject {
16977
17016
  const upgradeJob = upgradeWorkflow?.getJob("upgrade");
16978
17017
  const jobWithSteps = upgradeJob && "steps" in upgradeJob ? upgradeJob : void 0;
16979
17018
  if (jobWithSteps?.steps && Array.isArray(jobWithSteps.steps)) {
16980
- const insertIndex = 4;
17019
+ const upgradeStepIndex = jobWithSteps.steps.findIndex(
17020
+ (step) => step.name === "Upgrade dependencies"
17021
+ );
17022
+ const insertIndex = upgradeStepIndex >= 0 ? upgradeStepIndex + 1 : jobWithSteps.steps.length;
16981
17023
  if (this.configulatorRegistryConsumer) {
16982
17024
  jobWithSteps.steps.splice(insertIndex, 0, {
16983
17025
  name: `Sync ${CONFIGULATOR_PACKAGE_NAME} in workspace`,