@c4a/context-cli 0.7.70 → 0.7.71

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.
Files changed (45) hide show
  1. package/README.md +9 -0
  2. package/README.zh-CN.md +2 -0
  3. package/cli.js +2564 -2589
  4. package/indexers/bundles/context-code-indexer/references/composers/contracts-and-chains.md +2 -2
  5. package/indexers/bundles/context-code-indexer/references/composers/cross-module-chain.md +2 -2
  6. package/indexers/bundles/context-code-indexer/references/composers/development-and-delivery.md +2 -2
  7. package/indexers/bundles/context-code-indexer/references/composers/event-flow.md +2 -2
  8. package/indexers/bundles/context-code-indexer/references/composers/examples-and-documentation.md +2 -2
  9. package/indexers/bundles/context-code-indexer/references/composers/persistence-boundary.md +2 -2
  10. package/indexers/bundles/context-code-indexer/references/composers/protocol-boundary.md +2 -2
  11. package/indexers/bundles/context-code-indexer/references/composers/public-contract.md +2 -2
  12. package/indexers/bundles/context-code-indexer/references/indexer.md +2 -2
  13. package/indexers/bundles/context-code-indexer/templates/data-sync-reconciliation.md +2 -1
  14. package/indexers/bundles/context-markdown-indexer/references/indexer.md +2 -2
  15. package/indexers/contracts/profile-contract.json +245 -245
  16. package/indexers/release-manifest.json +14 -14
  17. package/package.json +12 -12
  18. package/parserEntryWorker.js +23 -11
  19. package/plugins/VERSION +1 -1
  20. package/plugins/claude/.claude-plugin/plugin.json +1 -1
  21. package/plugins/codex/.codex-plugin/plugin.json +2 -2
  22. package/plugins/cursor/.cursor-plugin/plugin.json +1 -1
  23. package/plugins/skills/context-code-indexer/references/composers/contracts-and-chains.md +2 -2
  24. package/plugins/skills/context-code-indexer/references/composers/cross-module-chain.md +2 -2
  25. package/plugins/skills/context-code-indexer/references/composers/development-and-delivery.md +2 -2
  26. package/plugins/skills/context-code-indexer/references/composers/event-flow.md +2 -2
  27. package/plugins/skills/context-code-indexer/references/composers/examples-and-documentation.md +2 -2
  28. package/plugins/skills/context-code-indexer/references/composers/persistence-boundary.md +2 -2
  29. package/plugins/skills/context-code-indexer/references/composers/protocol-boundary.md +2 -2
  30. package/plugins/skills/context-code-indexer/references/composers/public-contract.md +2 -2
  31. package/plugins/skills/context-code-indexer/references/indexer.md +2 -2
  32. package/plugins/skills/context-code-indexer/templates/data-sync-reconciliation.md +2 -1
  33. package/plugins/skills/context-markdown-indexer/references/indexer.md +2 -2
  34. package/providers/context/manifest.json +19 -19
  35. package/providers/context/provider.yaml +1 -1
  36. package/providers/context/resources/manuals/guides/code-indexer-skill-authoring.md +2 -1
  37. package/providers/context/resources/manuals/guides/knowledge-updates.md +7 -5
  38. package/providers/context/resources/manuals/guides/markdown-indexer-skill-authoring.md +1 -1
  39. package/providers/context/resources/manuals/guides/site-translation.md +19 -18
  40. package/providers/context/resources/manuals/reference/package-templates.md +2 -2
  41. package/providers/context/resources/procedures/approved-revision.md +8 -4
  42. package/providers/context/resources/procedures/knowledge-updates.md +7 -5
  43. package/providers/context/resources/procedures/production-stage-files.md +6 -4
  44. package/providers/context/resources/procedures/source-update.md +7 -0
  45. package/providers/context/skills/translate-site-locales/SKILL.md +6 -7
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "protocol": "context.indexer.cli-release-manifest/v1",
3
3
  "package": "@c4a/context-cli",
4
- "version": "0.7.70",
4
+ "version": "0.7.71",
5
5
  "issuer": "context4ai/context",
6
6
  "bundles": [
7
7
  {
@@ -11,7 +11,7 @@
11
11
  "kind": "cli-bundled",
12
12
  "locator": "cli-bundled://context/context-code-indexer"
13
13
  },
14
- "integrity": "sha256:d2d93b54af00ddb1062f49a0a2d622b5c88c1e9481e53ddfe7afe0445d950910",
14
+ "integrity": "sha256:c0dee602a87f5f95a3419fba3bbb3b3ea69292968b52c46744af869751487107",
15
15
  "manifest_digest": "sha256:1bb49c2cfaaf1cc847dccd90c5f2bb6465941217a0e0d6053c0a5aeff467a013",
16
16
  "files": [
17
17
  {
@@ -92,35 +92,35 @@
92
92
  },
93
93
  {
94
94
  "path": "references/composers/contracts-and-chains.md",
95
- "digest": "sha256:04d2286b60c153d9e5521145901042af06af9538902dab8c570027f77b28cfd9"
95
+ "digest": "sha256:9cd801c6901ecf4d0e95258224e4a1c82ee14ba4010ce594ff97267c6ce58e38"
96
96
  },
97
97
  {
98
98
  "path": "references/composers/cross-module-chain.md",
99
- "digest": "sha256:a548e2f92fb7416df78734d4b913526d86717ccdd740b78c35423ccaae0be6a4"
99
+ "digest": "sha256:7beb0ace96064e035de762c8ffe19b29c5960da7695363bf4873eb186528e2c3"
100
100
  },
101
101
  {
102
102
  "path": "references/composers/development-and-delivery.md",
103
- "digest": "sha256:77e15189c2f4e19d15ff0d88773b99a6f7fa3e37b0af3ac7b67c0316c744e947"
103
+ "digest": "sha256:27414925870e883803f3507abaacf2e2dc1c01bf03e4b6cf3ec47ad80f95770a"
104
104
  },
105
105
  {
106
106
  "path": "references/composers/event-flow.md",
107
- "digest": "sha256:0c33872b835ef44f9e7343173e3ca0913006e7f8c7a32617e005f866b60d74cb"
107
+ "digest": "sha256:a430d14f11c02c8b67e98afffd0cf9d3c6e71bbf421780fd9b0399723cab8e93"
108
108
  },
109
109
  {
110
110
  "path": "references/composers/examples-and-documentation.md",
111
- "digest": "sha256:580ad81d9bd8f7cd8426a98a26d0fb8e0aa5a5e9c7c064fe48addbc42bdca0b0"
111
+ "digest": "sha256:e97d2be0bb15ad28ad69de04dedb150ca0395278e45d8ee3299f22380579a45c"
112
112
  },
113
113
  {
114
114
  "path": "references/composers/persistence-boundary.md",
115
- "digest": "sha256:24c931a72a22d94e6a66eac8c8fc075dc559244bc1b623ec3673f3e6ae632bb5"
115
+ "digest": "sha256:406e4a08f50f6a75c6f2cb52bbc5263eb1962071971681749bed4a6b0072e4e7"
116
116
  },
117
117
  {
118
118
  "path": "references/composers/protocol-boundary.md",
119
- "digest": "sha256:b92134ac9c73d4b4b813a9fa29c410c30c808d14bb275cc61552f20e7740d856"
119
+ "digest": "sha256:fc30a3ad05e0e6183e526e801d72d802df69770885f627b51c1e9739eaac17b7"
120
120
  },
121
121
  {
122
122
  "path": "references/composers/public-contract.md",
123
- "digest": "sha256:d21f3d31def73d66f22e16f3a0e2932c144837a9814a3006f93fee8405212e88"
123
+ "digest": "sha256:0870c39814802b4ecb647f86878b325ddb29fec0dd9865de05de7e183d692422"
124
124
  },
125
125
  {
126
126
  "path": "references/diagram-behavior-examples.md",
@@ -136,7 +136,7 @@
136
136
  },
137
137
  {
138
138
  "path": "references/indexer.md",
139
- "digest": "sha256:7aacb7d6d11c30483ea73ccdbb6639fdc0912566f6e8022f28277dcee03244ab"
139
+ "digest": "sha256:4c14a0ea8961a5aeabe8fc457d5fc8b70bb3da948fa724ec189d08198651c659"
140
140
  },
141
141
  {
142
142
  "path": "references/metrics.md",
@@ -388,7 +388,7 @@
388
388
  },
389
389
  {
390
390
  "path": "templates/data-sync-reconciliation.md",
391
- "digest": "sha256:505f3f07c14b3f4dffc2ba301a9b307a707d83e0af055be751935e00114ffc00"
391
+ "digest": "sha256:0e8d5cc9759cced52a2cb9baad6b18c10c3df85cb9c61927d383268c7ef64214"
392
392
  },
393
393
  {
394
394
  "path": "templates/derived-generated-source-public-api-reference.md",
@@ -539,7 +539,7 @@
539
539
  "kind": "cli-bundled",
540
540
  "locator": "cli-bundled://context/context-markdown-indexer"
541
541
  },
542
- "integrity": "sha256:41f8ff9add026026c1a689224c684afe220680922935f5cee7afd792207ced98",
542
+ "integrity": "sha256:12a5a40e4770cc1b96876028732ed887e7c92b279060b247cc61dafe54fc6a75",
543
543
  "manifest_digest": "sha256:4b6ea2307077abd4899515d32f72941ab8e6bceaa89f2b7662d732bbf817bce5",
544
544
  "files": [
545
545
  {
@@ -628,7 +628,7 @@
628
628
  },
629
629
  {
630
630
  "path": "references/indexer.md",
631
- "digest": "sha256:3287d06938825afd9b2244b4cb2c4e2ba4cf8a03b78d0f924162e13eb06f8a93"
631
+ "digest": "sha256:d96c0396d43c610870ae78aa80cf19b3fedec761a70ca330f2190115615133cf"
632
632
  },
633
633
  {
634
634
  "path": "references/semantic-planning.md",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@c4a/context-cli",
3
- "version": "0.7.70",
3
+ "version": "0.7.71",
4
4
  "type": "module",
5
5
  "description": "Local runtime and Agent integration for traceable knowledge production",
6
6
  "license": "MIT",
@@ -24,17 +24,17 @@
24
24
  },
25
25
  "dependencies": {
26
26
  "@c4a/agent-graph": "0.3.0",
27
- "@c4a/context": "0.7.70",
28
- "@c4a/extract": "0.7.70",
29
- "@c4a/extract-contract": "0.7.70",
30
- "@c4a/extract-go": "0.7.70",
31
- "@c4a/extract-mdx": "0.7.70",
32
- "@c4a/extract-proto": "0.7.70",
33
- "@c4a/extract-rush": "0.7.70",
34
- "@c4a/extract-sql": "0.7.70",
35
- "@c4a/extract-style": "0.7.70",
36
- "@c4a/extract-thrift": "0.7.70",
37
- "@c4a/extract-ts": "0.7.70",
27
+ "@c4a/context": "0.7.71",
28
+ "@c4a/extract": "0.7.71",
29
+ "@c4a/extract-contract": "0.7.71",
30
+ "@c4a/extract-go": "0.7.71",
31
+ "@c4a/extract-mdx": "0.7.71",
32
+ "@c4a/extract-proto": "0.7.71",
33
+ "@c4a/extract-rush": "0.7.71",
34
+ "@c4a/extract-sql": "0.7.71",
35
+ "@c4a/extract-style": "0.7.71",
36
+ "@c4a/extract-thrift": "0.7.71",
37
+ "@c4a/extract-ts": "0.7.71",
38
38
  "@mermaid-js/layout-elk": "0.2.0",
39
39
  "commander": "^11.0.0",
40
40
  "fast-xml-parser": "^5.10.1",
@@ -4821,6 +4821,18 @@ var init_indexerProtocolCommon = __esm(() => {
4821
4821
 
4822
4822
  // ../context/src/articleStructure.ts
4823
4823
  import { createHash as createHash3 } from "node:crypto";
4824
+ function articleFragmentReferenceListSchema(item) {
4825
+ return exports_external.array(item).max(ARTICLE_FRAGMENT_REGION_LIMIT, {
4826
+ message: `A fragment can cite at most ${ARTICLE_FRAGMENT_REGION_LIMIT} source regions`
4827
+ }).superRefine((references, context) => {
4828
+ const files = new Set(references.map((reference) => JSON.stringify([reference.source_ref, reference.locator.path])));
4829
+ if (files.size > ARTICLE_FRAGMENT_SOURCE_FILE_LIMIT)
4830
+ context.addIssue({
4831
+ code: exports_external.ZodIssueCode.custom,
4832
+ message: `A fragment can cite at most ${ARTICLE_FRAGMENT_SOURCE_FILE_LIMIT} distinct source files (got ${files.size}); split the fragment or drop a supporting file`
4833
+ });
4834
+ });
4835
+ }
4824
4836
  function articleFragmentReferences(values) {
4825
4837
  const unique = new Map;
4826
4838
  for (const value of values) {
@@ -4885,7 +4897,7 @@ function locateArticleRegion(regionText, newText, path) {
4885
4897
  end_line: found + region.length
4886
4898
  };
4887
4899
  }
4888
- var articleSourceLocatorSchema, articleSourceReferenceSchema, articleSectionSchema, articleStructureEntrySchema;
4900
+ var articleSourceLocatorSchema, articleSourceReferenceSchema, ARTICLE_FRAGMENT_SOURCE_FILE_LIMIT = 3, ARTICLE_FRAGMENT_REGION_LIMIT = 8, articleSectionSchema, articleStructureEntrySchema;
4889
4901
  var init_articleStructure = __esm(() => {
4890
4902
  init_zod();
4891
4903
  init_contracts();
@@ -4909,7 +4921,7 @@ var init_articleStructure = __esm(() => {
4909
4921
  }).strict();
4910
4922
  articleSectionSchema = exports_external.object({
4911
4923
  id: exports_external.string().min(1),
4912
- references: exports_external.array(articleSourceReferenceSchema).max(3)
4924
+ references: articleFragmentReferenceListSchema(articleSourceReferenceSchema)
4913
4925
  }).strict();
4914
4926
  articleStructureEntrySchema = exports_external.object({
4915
4927
  article_id: exports_external.string().min(1),
@@ -5322,12 +5334,12 @@ var init_indexerContentLayers = __esm(() => {
5322
5334
  block_id: indexerIdSchema,
5323
5335
  layer: exports_external.literal("semantic-prose"),
5324
5336
  markdown: exports_external.string().min(1),
5325
- references: exports_external.array(articleSourceReferenceSchema).max(3)
5337
+ references: articleFragmentReferenceListSchema(articleSourceReferenceSchema)
5326
5338
  }).strict();
5327
5339
  renderedContentBlockPayloadSchema = exports_external.object({
5328
5340
  layer: exports_external.enum(["deterministic-block", "semantic-prose"]),
5329
5341
  markdown: exports_external.string().min(1),
5330
- references: exports_external.array(articleSourceReferenceSchema).max(3)
5342
+ references: articleFragmentReferenceListSchema(articleSourceReferenceSchema)
5331
5343
  }).strict();
5332
5344
  indexerRenderedContentBlockSchema = renderedContentBlockPayloadSchema.extend({
5333
5345
  content_digest: indexerDigestSchema
@@ -5360,7 +5372,7 @@ var init_indexerArtifact = __esm(() => {
5360
5372
  }).strict();
5361
5373
  indexerArtifactTemplateVariableSchema = exports_external.object({
5362
5374
  value: indexerCanonicalJsonSchema,
5363
- references: exports_external.array(articleSourceReferenceSchema).max(3)
5375
+ references: articleFragmentReferenceListSchema(articleSourceReferenceSchema)
5364
5376
  }).strict();
5365
5377
  artifactCommonFields = {
5366
5378
  artifact_id: indexerIdSchema,
@@ -18340,14 +18352,14 @@ var init_indexerSemanticInput = __esm(() => {
18340
18352
  heading: exports_external.string().min(1),
18341
18353
  visuals: exports_external.array(authorVisualSchema).optional(),
18342
18354
  markdown: exports_external.string().min(1),
18343
- references: exports_external.array(exports_external.object({ source_ref: exports_external.string().min(1), locator: articleSourceLocatorSchema }).strict()).max(3).default([]),
18355
+ references: articleFragmentReferenceListSchema(exports_external.object({ source_ref: exports_external.string().min(1), locator: articleSourceLocatorSchema }).strict()).default([]),
18344
18356
  answers: exports_external.array(exports_external.string().min(1)).default([])
18345
18357
  }).strict();
18346
18358
  authorTemplateVariablesSchema = exports_external.record(exports_external.union([
18347
18359
  exports_external.string(),
18348
18360
  exports_external.object({
18349
18361
  value: exports_external.string(),
18350
- references: exports_external.array(exports_external.object({ source_ref: exports_external.string().min(1), locator: articleSourceLocatorSchema }).strict()).max(3).default([])
18362
+ references: articleFragmentReferenceListSchema(exports_external.object({ source_ref: exports_external.string().min(1), locator: articleSourceLocatorSchema }).strict()).default([])
18351
18363
  }).strict()
18352
18364
  ]));
18353
18365
  authorMemberDispositionSchema = exports_external.object({
@@ -18458,7 +18470,7 @@ var init_indexerSemanticInput = __esm(() => {
18458
18470
  heading: exports_external.string().min(1),
18459
18471
  visuals: exports_external.array(authorVisualSchema).optional(),
18460
18472
  markdown: exports_external.string().min(1),
18461
- references: exports_external.array(exports_external.object({ source_ref: exports_external.string().min(1), locator: articleSourceLocatorSchema }).strict()).max(3)
18473
+ references: articleFragmentReferenceListSchema(exports_external.object({ source_ref: exports_external.string().min(1), locator: articleSourceLocatorSchema }).strict())
18462
18474
  }).strict();
18463
18475
  postAuthorInputBaseSchema = exports_external.object({
18464
18476
  stage: exports_external.literal("post-author"),
@@ -19270,7 +19282,7 @@ var init_indexerTemplateRendering = __esm(() => {
19270
19282
  artifact_kind: indexerIdSchema,
19271
19283
  markdown: exports_external.string().min(1),
19272
19284
  content_blocks: exports_external.array(indexerRenderedContentBlockSchema).min(1),
19273
- references: exports_external.array(articleSourceReferenceSchema).max(3),
19285
+ references: articleFragmentReferenceListSchema(articleSourceReferenceSchema),
19274
19286
  content_digest: indexerDigestSchema
19275
19287
  }).strict();
19276
19288
  renderedMaterialGapSchema = exports_external.object({
@@ -19325,7 +19337,7 @@ var init_indexerLayoutResolver = __esm(() => {
19325
19337
  artifact_kind: indexerIdSchema,
19326
19338
  state: exports_external.enum(["structured", "rendered", "material-gap"]),
19327
19339
  content_digest: indexerDigestSchema.nullable(),
19328
- references: exports_external.array(articleSourceReferenceSchema).max(3),
19340
+ references: articleFragmentReferenceListSchema(articleSourceReferenceSchema),
19329
19341
  material_question_proposal_ref: indexerCanonicalRefSchema.nullable(),
19330
19342
  collection_resolution_digest: indexerDigestSchema
19331
19343
  }).strict();
@@ -19698,7 +19710,7 @@ var init_indexerCandidateCompile = __esm(() => {
19698
19710
  sections: exports_external.array(exports_external.object({
19699
19711
  section_ref: exports_external.string().min(1),
19700
19712
  section_key: indexerIdSchema,
19701
- references: exports_external.array(articleSourceReferenceSchema).max(3),
19713
+ references: articleFragmentReferenceListSchema(articleSourceReferenceSchema),
19702
19714
  markdown: exports_external.string().min(1),
19703
19715
  markdown_digest: indexerDigestSchema
19704
19716
  }).strict()).min(1),
package/plugins/VERSION CHANGED
@@ -1 +1 @@
1
- 0.7.70
1
+ 0.7.71
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "c4a",
3
3
  "description": "Start or continue a project-local knowledge workspace through one graph-routed entry.",
4
- "version": "0.7.70",
4
+ "version": "0.7.71",
5
5
  "author": {
6
6
  "name": "c4a"
7
7
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "c4a",
3
- "version": "0.7.70",
3
+ "version": "0.7.71",
4
4
  "description": "Start or continue a project-local knowledge workspace through one graph-routed entry.",
5
5
  "author": { "name": "c4a" },
6
6
  "homepage": "https://github.com/context4ai/c4a",
@@ -10,7 +10,7 @@
10
10
  "skills": "./skills/",
11
11
  "interface": {
12
12
  "displayName": "C4A Context",
13
- "shortDescription": "Initialize and advance a local, source-linked project knowledge workspace.\nv0.7.70",
13
+ "shortDescription": "Initialize and advance a local, source-linked project knowledge workspace.\nv0.7.71",
14
14
  "longDescription": "Create a Context workspace and use agent-guided next steps to register sources, run extraction, review candidates, build package outputs, and verify health without silently mutating source repositories.",
15
15
  "developerName": "c4a",
16
16
  "category": "Productivity",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "c4a",
3
3
  "displayName": "C4A Context",
4
- "version": "0.7.70",
4
+ "version": "0.7.71",
5
5
  "description": "Start or continue a project-local knowledge workspace through one graph-routed entry.",
6
6
  "author": {
7
7
  "name": "Context4AI",
@@ -24,5 +24,5 @@ empty `fragments` array.
24
24
 
25
25
  Use only the supplied primary artifacts and their actual regional references.
26
26
  Do not require a primary Fact table, evidence IDs, or graph nodes. Each derived
27
- output fragment retains at most three real source locations; no reference
28
- ledger is reconstructed from the full inventory.
27
+ output fragment retains real source regions from at most three files (up to
28
+ eight regions); no reference ledger is reconstructed from the full inventory.
@@ -23,5 +23,5 @@ empty result: the accepted layer-fragment result with `fragments: []`.
23
23
 
24
24
  Use only the supplied primary artifacts and their actual regional references.
25
25
  Do not require a primary Fact table, evidence IDs, or graph nodes. Each derived
26
- output fragment retains at most three real source locations; no reference
27
- ledger is reconstructed from the full inventory.
26
+ output fragment retains real source regions from at most three files (up to
27
+ eight regions); no reference ledger is reconstructed from the full inventory.
@@ -23,5 +23,5 @@ return `fragments: []` in the ordinary structured result.
23
23
 
24
24
  Use only the supplied primary artifacts and their actual regional references.
25
25
  Do not require a primary Fact table, evidence IDs, or graph nodes. Each derived
26
- output fragment retains at most three real source locations; no reference
27
- ledger is reconstructed from the full inventory.
26
+ output fragment retains real source regions from at most three files (up to
27
+ eight regions); no reference ledger is reconstructed from the full inventory.
@@ -22,5 +22,5 @@ reader value must return the normal result envelope with `fragments: []`.
22
22
 
23
23
  Use only the supplied primary artifacts and their actual regional references.
24
24
  Do not require a primary Fact table, evidence IDs, or graph nodes. Each derived
25
- output fragment retains at most three real source locations; no reference
26
- ledger is reconstructed from the full inventory.
25
+ output fragment retains real source regions from at most three files (up to
26
+ eight regions); no reference ledger is reconstructed from the full inventory.
@@ -23,5 +23,5 @@ never invent tutorial steps.
23
23
 
24
24
  Use only the supplied primary artifacts and their actual regional references.
25
25
  Do not require a primary Fact table, evidence IDs, or graph nodes. Each derived
26
- output fragment retains at most three real source locations; no reference
27
- ledger is reconstructed from the full inventory.
26
+ output fragment retains real source regions from at most three files (up to
27
+ eight regions); no reference ledger is reconstructed from the full inventory.
@@ -22,5 +22,5 @@ set rather than reading outside the workset.
22
22
 
23
23
  Use only the supplied primary artifacts and their actual regional references.
24
24
  Do not require a primary Fact table, evidence IDs, or graph nodes. Each derived
25
- output fragment retains at most three real source locations; no reference
26
- ledger is reconstructed from the full inventory.
25
+ output fragment retains real source regions from at most three files (up to
26
+ eight regions); no reference ledger is reconstructed from the full inventory.
@@ -23,5 +23,5 @@ answers the reader question, return a valid result with `fragments: []`.
23
23
 
24
24
  Use only the supplied primary artifacts and their actual regional references.
25
25
  Do not require a primary Fact table, evidence IDs, or graph nodes. Each derived
26
- output fragment retains at most three real source locations; no reference
27
- ledger is reconstructed from the full inventory.
26
+ output fragment retains real source regions from at most three files (up to
27
+ eight regions); no reference ledger is reconstructed from the full inventory.
@@ -36,5 +36,5 @@ Composer's declared result schema and actions.
36
36
 
37
37
  Use only the supplied primary artifacts and their actual regional references.
38
38
  Do not require a primary Fact table, evidence IDs, or graph nodes. Each derived
39
- output fragment retains at most three real source locations; no reference
40
- ledger is reconstructed from the full inventory.
39
+ output fragment retains real source regions from at most three files (up to
40
+ eight regions); no reference ledger is reconstructed from the full inventory.
@@ -129,8 +129,8 @@ affected sections when appropriate. Preserve still-valid examples, limitations
129
129
  and confirmed contributions. New explanatory context does not require
130
130
  repartitioning unchanged code.
131
131
 
132
- Each fragment uses actual source regions, at most three locations; the CLI
133
- computes content digests. Do not use fallback evidence from an unrelated
132
+ Each fragment uses actual source regions from at most three source files (up
133
+ to eight regions in total); the CLI computes content digests. Do not use fallback evidence from an unrelated
134
134
  member, fabricate a continuous span for unrelated locations, or include
135
135
  process identities, full source bodies or credentials in reader output.
136
136
 
@@ -61,7 +61,8 @@ owner or inventory membership is required; avoid duplicating existing prose.
61
61
  The article may cite every authorized participating source. Cover the reader
62
62
  question and relevant handoffs defined in the task brief.
63
63
  Explain operations and handoffs in reader prose, links or diagrams, citing the
64
- actual source regions for each fragment (at most three locations per fragment).
64
+ actual source regions for each fragment (at most three source files per fragment;
65
+ several regions of one file are fine, up to eight regions in total).
65
66
  Do not emit graph edges, classify nodes or create a relationship ledger.
66
67
 
67
68
  ## Granularity and stop conditions
@@ -27,8 +27,8 @@ needed section edits when appropriate. Stable section markers and title and
27
27
  description follow that schema; there is no ArtifactResult, subject identity
28
28
  or profile-owned output mapping to assemble.
29
29
 
30
- For each output fragment, cite the actual source regions used, at most three
31
- locations. Use source_ref and an inclusive file/line locator; the CLI computes
30
+ For each output fragment, cite the actual source regions used, from at most
31
+ three source files (up to eight regions in total). Use source_ref and an inclusive file/line locator; the CLI computes
32
32
  content digests. Do not attach an entire corpus to a generic paragraph or
33
33
  combine unrelated locations into a fabricated continuous span. Split genuinely
34
34
  distinct explanations when they need distinct references.
@@ -2,7 +2,7 @@
2
2
  "schema": "agent-graph.bundle.v1",
3
3
  "provider": {
4
4
  "id": "c4a/context",
5
- "version": "0.7.70"
5
+ "version": "0.7.71"
6
6
  },
7
7
  "providerManifest": "provider.yaml",
8
8
  "graphs": [
@@ -198,7 +198,7 @@
198
198
  {
199
199
  "id": "context.sdk.package-templates",
200
200
  "path": "resources/manuals/reference/package-templates.md",
201
- "digest": "sha256:8d512d232ea5157717eca73357a213ab2449d83cf98bec217621aff79eda0216"
201
+ "digest": "sha256:f3a7fcc0166a6af15da550edb7937c7630bd2fb2372ca2ccd430b7cd6e56a3a9"
202
202
  },
203
203
  {
204
204
  "id": "context.sdk.page-customization",
@@ -213,7 +213,7 @@
213
213
  {
214
214
  "id": "context.sdk.site-translation",
215
215
  "path": "resources/manuals/guides/site-translation.md",
216
- "digest": "sha256:f91c6676dc2b51e91e29d9a818c56039b5f6389982b124d3f3609c7c88293a6a"
216
+ "digest": "sha256:6d7567967cda5c592665641cfb8ba29255621acf77ee27b45ee6272e76879872"
217
217
  },
218
218
  {
219
219
  "id": "context.sdk.template-variables",
@@ -288,7 +288,7 @@
288
288
  {
289
289
  "id": "procedure.approved-revision",
290
290
  "path": "resources/procedures/approved-revision.md",
291
- "digest": "sha256:31bc0c4dfb0393b079f69c5cfe84c0b4b0e77149e64e923838bdeeb0f7002669"
291
+ "digest": "sha256:fecf43f12b1759cc1ca3b716892a787b5445caa25ff7efadb2cebf042a309a0c"
292
292
  },
293
293
  {
294
294
  "id": "procedure.close-and-build",
@@ -323,7 +323,7 @@
323
323
  {
324
324
  "id": "procedure.knowledge-updates",
325
325
  "path": "resources/procedures/knowledge-updates.md",
326
- "digest": "sha256:a8c3505aa7bd7e97db85fafb89a30a62f15c24e9976b1de1f5d3736143b3e0fd"
326
+ "digest": "sha256:8a3e8d6539bc18d4bc82cb69376b5126d53c6d1535c9145ba5770b72cf008656"
327
327
  },
328
328
  {
329
329
  "id": "procedure.note",
@@ -348,7 +348,7 @@
348
348
  {
349
349
  "id": "procedure.production-stage-files",
350
350
  "path": "resources/procedures/production-stage-files.md",
351
- "digest": "sha256:add64bef96b5d87aa8205386637a00b1a4a57cf40f715fcf5659d45b577ac2cc"
351
+ "digest": "sha256:3baccaa799d01749dae4cdb7bf839c7d182009540d3bf91a95e775d44be2ef6c"
352
352
  },
353
353
  {
354
354
  "id": "procedure.project-configuration",
@@ -383,7 +383,7 @@
383
383
  {
384
384
  "id": "procedure.source-update",
385
385
  "path": "resources/procedures/source-update.md",
386
- "digest": "sha256:70953737216d099e06875d23b5ae00759e71fc1bdcfeade9b24df9e89bc2f581"
386
+ "digest": "sha256:900eedba46408ca1f5a38de152e70a36f04a9ad020f48a20fdad0a1e79029ece"
387
387
  },
388
388
  {
389
389
  "id": "procedure.task-recovery",
@@ -589,7 +589,7 @@
589
589
  },
590
590
  {
591
591
  "path": "provider.yaml",
592
- "digest": "sha256:f4aa4bb6f22eb6e9fd9a95f5b44f87b404768bfbc0a40df7413df908a21b9033"
592
+ "digest": "sha256:e8d06cd4944c44f7c35a4fb0ada6027a8e3c2d3f2fd618c8f372cabd741e85ab"
593
593
  },
594
594
  {
595
595
  "path": "resources/contracts/indexer-provider-guide.yaml",
@@ -637,7 +637,7 @@
637
637
  },
638
638
  {
639
639
  "path": "resources/manuals/guides/code-indexer-skill-authoring.md",
640
- "digest": "sha256:55cf273848c8acce51f83bb03b4d86222c4d431472cde573f081049f88bddece"
640
+ "digest": "sha256:35a403edb2efaa0814df6f7b743c9c6a997f65603667678b53f6b36a068d124b"
641
641
  },
642
642
  {
643
643
  "path": "resources/manuals/guides/imports.md",
@@ -649,7 +649,7 @@
649
649
  },
650
650
  {
651
651
  "path": "resources/manuals/guides/knowledge-updates.md",
652
- "digest": "sha256:c26d6552b9a21d2ce1fb3a2508d0909165a3f61ab126fc4f7153fc2bca738e95"
652
+ "digest": "sha256:bdb5bfac802dfea75f38af8800216288cf740b53395ccbe4bfe5e30a1c555f48"
653
653
  },
654
654
  {
655
655
  "path": "resources/manuals/guides/lark-resources.md",
@@ -657,7 +657,7 @@
657
657
  },
658
658
  {
659
659
  "path": "resources/manuals/guides/markdown-indexer-skill-authoring.md",
660
- "digest": "sha256:63dcf596e262035500d94910e1adc37d9bc4174862821a15a381019ba3ab322a"
660
+ "digest": "sha256:a2d9cce0fce4a220befbfa8c0a8062ec4656b1ab812b149e0a14d341967d976a"
661
661
  },
662
662
  {
663
663
  "path": "resources/manuals/guides/note.md",
@@ -681,7 +681,7 @@
681
681
  },
682
682
  {
683
683
  "path": "resources/manuals/guides/site-translation.md",
684
- "digest": "sha256:f91c6676dc2b51e91e29d9a818c56039b5f6389982b124d3f3609c7c88293a6a"
684
+ "digest": "sha256:6d7567967cda5c592665641cfb8ba29255621acf77ee27b45ee6272e76879872"
685
685
  },
686
686
  {
687
687
  "path": "resources/manuals/guides/source-batches.md",
@@ -705,7 +705,7 @@
705
705
  },
706
706
  {
707
707
  "path": "resources/manuals/reference/package-templates.md",
708
- "digest": "sha256:8d512d232ea5157717eca73357a213ab2449d83cf98bec217621aff79eda0216"
708
+ "digest": "sha256:f3a7fcc0166a6af15da550edb7937c7630bd2fb2372ca2ccd430b7cd6e56a3a9"
709
709
  },
710
710
  {
711
711
  "path": "resources/manuals/reference/project-api.md",
@@ -717,7 +717,7 @@
717
717
  },
718
718
  {
719
719
  "path": "resources/procedures/approved-revision.md",
720
- "digest": "sha256:31bc0c4dfb0393b079f69c5cfe84c0b4b0e77149e64e923838bdeeb0f7002669"
720
+ "digest": "sha256:fecf43f12b1759cc1ca3b716892a787b5445caa25ff7efadb2cebf042a309a0c"
721
721
  },
722
722
  {
723
723
  "path": "resources/procedures/close-and-build.md",
@@ -745,7 +745,7 @@
745
745
  },
746
746
  {
747
747
  "path": "resources/procedures/knowledge-updates.md",
748
- "digest": "sha256:a8c3505aa7bd7e97db85fafb89a30a62f15c24e9976b1de1f5d3736143b3e0fd"
748
+ "digest": "sha256:8a3e8d6539bc18d4bc82cb69376b5126d53c6d1535c9145ba5770b72cf008656"
749
749
  },
750
750
  {
751
751
  "path": "resources/procedures/note.md",
@@ -765,7 +765,7 @@
765
765
  },
766
766
  {
767
767
  "path": "resources/procedures/production-stage-files.md",
768
- "digest": "sha256:add64bef96b5d87aa8205386637a00b1a4a57cf40f715fcf5659d45b577ac2cc"
768
+ "digest": "sha256:3baccaa799d01749dae4cdb7bf839c7d182009540d3bf91a95e775d44be2ef6c"
769
769
  },
770
770
  {
771
771
  "path": "resources/procedures/project-configuration.md",
@@ -793,7 +793,7 @@
793
793
  },
794
794
  {
795
795
  "path": "resources/procedures/source-update.md",
796
- "digest": "sha256:70953737216d099e06875d23b5ae00759e71fc1bdcfeade9b24df9e89bc2f581"
796
+ "digest": "sha256:900eedba46408ca1f5a38de152e70a36f04a9ad020f48a20fdad0a1e79029ece"
797
797
  },
798
798
  {
799
799
  "path": "resources/procedures/task-recovery.md",
@@ -901,7 +901,7 @@
901
901
  },
902
902
  {
903
903
  "path": "skills/translate-site-locales/SKILL.md",
904
- "digest": "sha256:d736b2dff46cc75330522ecbef41f10d77b24dae87fcd290418bb25683f94a43"
904
+ "digest": "sha256:b13be9668338273cb6f2a7baa4bf1249d77e63895369220af84193c1de3da3ad"
905
905
  },
906
906
  {
907
907
  "path": "skills/work-production-stage/SKILL.md",
@@ -912,5 +912,5 @@
912
912
  "indexer": [],
913
913
  "workspace": []
914
914
  },
915
- "digest": "sha256:063167b951010b10898421a8585b4cd8311eb002f56d08131d675c1755c510c1"
915
+ "digest": "sha256:070092db096158a07452305ff56f39417032207865f7deac8bf3cb82f67392f1"
916
916
  }
@@ -1,6 +1,6 @@
1
1
  schema: agent-graph.provider.v1
2
2
  id: c4a/context
3
- version: 0.7.70
3
+ version: 0.7.71
4
4
  name: Context workflow
5
5
  description: Internal work contract for Context knowledge workspaces.
6
6
  graphs:
@@ -50,7 +50,8 @@ proof of runtime behavior. Preserve expressions without executing project code,
50
50
  distinguish declaration defaults from implementation defaults, and state unknowns.
51
51
 
52
52
  Use the current stage's Markdown and reference-file schemas. Each fragment cites
53
- at most three actual source locations; the CLI computes regional digests. Split
53
+ actual source regions from at most three files (up to eight regions); the CLI
54
+ computes regional digests. Split
54
55
  an explanation when it needs separate evidence, not to fill a fixed template.
55
56
  Reuse stable article and fragment identities when revising. Supporting documents,
56
57
  notes or sessions may contribute to the same article without becoming code facts.
@@ -338,7 +338,7 @@ changing structure, adding a page or when a section has no unambiguous ID.
338
338
  To change a fragment's citations, include `references` alongside its `section_id`:
339
339
  each entry supplies `source_ref` and `locator` (`path`, `start_line`, `end_line`).
340
340
  Context computes the region fingerprint. This uses the same revision submission,
341
- with at most three source positions per fragment. Full Markdown may include a
341
+ with at most three source files and eight regions per fragment. Full Markdown may include a
342
342
  `sections` list of reference edits; local section edits may change content,
343
343
  references, or both. Omission preserves citations; an empty list removes them.
344
344
 
@@ -703,17 +703,19 @@ Revision section edits may supply `references` as `source_ref` plus a
703
703
  `locator` containing `path`, `start_line`, and `end_line`. Context computes the
704
704
  regional digest. Omitted references preserve the current fragment's citations;
705
705
  an explicit empty list removes them, and deleting a fragment removes its
706
- citations. Each fragment may cite at most three source positions. Register and
706
+ citations. Each fragment may cite at most three source files and eight regions. Register and
707
707
  authorize new material before citing it, then follow normal Review, close and
708
708
  build. Article links alone do not authorize reading new sources or prove a claim.
709
709
 
710
710
  ### Locating submitted references
711
711
 
712
712
  Submission locators also accept `{path, heading}` or `{path, quote}` instead of
713
- line numbers. Use exactly one form. A heading matches an exact ATX heading
714
- outside code fences in a Markdown source; its region ends before the next
713
+ line numbers. Use exactly one form. A heading is the title text of an exact ATX heading
714
+ outside code fences in a Markdown source; a leading `##` marker is optional and,
715
+ when present, also selects the heading level; its region ends before the next
715
716
  same-level or higher-level heading. A quote is an exact, unique, nonempty
716
717
  substring (line endings are normalized). Ambiguous matches return candidate
717
718
  line ranges. Both forms resolve against authorized captured text before hashing;
718
719
  stored references still contain only `path`, `start_line` and `end_line`.
719
- The three-region limit applies after resolving and deduplicating positions.
720
+ The per-fragment limits (three source files, eight regions) apply after
721
+ resolving and deduplicating positions.
@@ -45,7 +45,7 @@ submit the short stage-relative manifest. Title and description belong to the
45
45
  article, not an internal layout-mapping tuple.
46
46
 
47
47
  Keep stable article and fragment identities when revising. Each fragment cites
48
- at most three actual source regions. The CLI handles source digests and safety;
48
+ actual source regions from at most three files (up to eight regions). The CLI handles source digests and safety;
49
49
  the Agent judges whether the evidence supports the explanation. For a local
50
50
  failure, use the returned fragment identifier or position to repair the affected
51
51
  part. Completed independent tasks can be submitted without the rest of the batch.