diff --git a/crates/eureka-pipeline/golden/envelopes.txt b/crates/eureka-pipeline/golden/envelopes.txt index 1519dcf..a5e6fc8 100644 --- a/crates/eureka-pipeline/golden/envelopes.txt +++ b/crates/eureka-pipeline/golden/envelopes.txt @@ -9,6 +9,7 @@ # live mind store (eureka-body:verdict:cut-leaf-into-huginn.s1) and to # Epiphany ef956865 modulo that rename (verdict ...s2). Never regenerate to make # a failing test pass: a diff here is a wire change and needs its own ruling. +# cut_spec.reads-and-symbol and finding.location-symbol were appended after 44c010c added CodeLocation.symbol and PipelineCutSpec.reads (ruling context-pack-read-anchors); no earlier line changed. sample.campaign eureka-state:campaign:self epiphany.pipeline.campaign.v2 EpiphanyPipelineCampaignDocument 9185a4736c7567ac657572656b612d7374617465a57469746c65b5457572656b6120706970656c696e65207374617465a57265706f7391b147616d6543756c742f4570697068616e79ae776f726b696e675f6272616e6368bb636f6465782f657572656b612d706970656c696e652d7374617465aa7461726765745f646f6384a470617468d9256e6f7465732f657572656b612d706970656c696e652d73746174652d7461726765742e6d64aa73746172745f6c696e6501a8656e645f6c696e6509a6636f6d6d6974a83566393832323864 sample.target eureka-state:target:r2 epiphany.pipeline.target.v2 EpiphanyPipelineTargetDocument 9186a863616d706169676eac657572656b612d7374617465a87265766973696f6e02aa696e76617269616e74739182a56c6162656cab6d696e642d61646d697473a973746174656d656e74b64f6e6c792061646d697373696f6e207772697465732eac6e6f745f696e5f73636f706591ac4576652062726f7773696e67b963616e6f6e6963616c5f696d706c656d656e746174696f6e7391a743756c744c6962a3646f6384a470617468d9256e6f7465732f657572656b612d706970656c696e652d73746174652d7461726765742e6d64aa73746172745f6c696e6501a8656e645f6c696e6509a6636f6d6d6974a83566393832323864 sample.question eureka-state:question:Q1 epiphany.pipeline.question.v2 EpiphanyPipelineQuestionDocument 9189a863616d706169676eac657572656b612d7374617465a56c6162656ca25131a57469746c65b357686f206f776e73207468652073746174653fa87175657374696f6eb357686f206f776e73207468652073746174653fa76f7074696f6e739282a56c6162656ca141a474657874ab616e20696e7374616e636582a56c6162656ca142a474657874a661207265706fab7265636f6d6d656e646564a141a7646570656e647391a6437574203361a97261697365645f696e82a46b696e64a743757453706563a26964bf657572656b612d73746174653a6375745f737065633a6375742d33612e7231a861736b65645f6f6eaa323032362d30392d3135 @@ -40,3 +41,5 @@ finding.plausible-blocker-preexisting-kinds eureka-state:finding:cut-3a.s2.F4 ep finding.severity-medium eureka-state:finding:cut-3a.s2.F4 epiphany.pipeline.finding.v2 EpiphanyPipelineFindingDocument 918da863616d706169676eac657572656b612d7374617465a776657264696374be657572656b612d73746174653a766572646963743a6375742d33612e7332a56c6162656ca24634a572616e676582a462617365a83566393832323864a468656164a83566393832323864aa636f6e666964656e6365a9436f6e6669726d6564a87365766572697479a64d656469756da5636c61696dd9214120646f74746564206c6162656c20636f6d706f7365732074776f206b6579732eaa696e76617269616e747391ab6d696e642d61646d697473a96c6f636174696f6e739183a470617468d9216372617465732f657572656b612d706970656c696e652f7372632f6c69622e7273a46c696e6501a8656e645f6c696e6509b06661696c7572655f7363656e6172696fbc54776f20646f63756d656e747320636c61696d206f6e65206b65792ea865766964656e63659183a46b696e64a454657374a76c6f6361746f72aa636172676f2074657374a6726573756c74a26f6baa707265636564656e747390a66f726967696eaa496e74726f6475636564 finding.severity-low eureka-state:finding:cut-3a.s2.F4 epiphany.pipeline.finding.v2 EpiphanyPipelineFindingDocument 918da863616d706169676eac657572656b612d7374617465a776657264696374be657572656b612d73746174653a766572646963743a6375742d33612e7332a56c6162656ca24634a572616e676582a462617365a83566393832323864a468656164a83566393832323864aa636f6e666964656e6365a9436f6e6669726d6564a87365766572697479a34c6f77a5636c61696dd9214120646f74746564206c6162656c20636f6d706f7365732074776f206b6579732eaa696e76617269616e747391ab6d696e642d61646d697473a96c6f636174696f6e739183a470617468d9216372617465732f657572656b612d706970656c696e652f7372632f6c69622e7273a46c696e6501a8656e645f6c696e6509b06661696c7572655f7363656e6172696fbc54776f20646f63756d656e747320636c61696d206f6e65206b65792ea865766964656e63659183a46b696e64a454657374a76c6f6361746f72aa636172676f2074657374a6726573756c74a26f6baa707265636564656e747390a66f726967696eaa496e74726f6475636564 ruling.authority-mind eureka-state:ruling:R8 epiphany.pipeline.ruling.v2 EpiphanyPipelineRulingDocument 918aa863616d706169676eac657572656b612d7374617465a56c6162656ca25238a57469746c65b9416e20696e7374616e6365206f776e7320697473206d696e64a7616e7377657273c0a663686f696365c0a672756c696e67ba416e20696e7374616e6365206f776e7320697473206d696e642eae6f70657261746f725f71756f7465c0a872756c65645f6f6eaa323032362d30392d3135aa707265636564656e74739185a47265706fb147616d6543756c742f4165746865726961a6636f6d6d6974d92861616161616161616161616161616161616161616161616161616161616161616161616161616161a46b696e64a652756c696e67a26964b363756c7463616368653a72756c696e673a5231ae7061796c6f61645f736861323536d94062626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262a9617574686f72697479a44d696e64 +cut_spec.reads-and-symbol eureka-state:cut_spec:cut-3a.r1 epiphany.pipeline.cut_spec.v2 EpiphanyPipelineCutSpecDocument 91de0013a863616d706169676eac657572656b612d7374617465a3637574a23361a87265766973696f6e01a57469746c65b2506970656c696e6520646f63756d656e7473a47265706fb147616d6543756c742f4570697068616e79a66272616e6368bb636f6465782f657572656b612d706970656c696e652d7374617465a462617365a83566393832323864aa646570656e64735f6f6e91a132a5666972737491ae526561642074686520737065632ea764656c657465739183a470617468a66f6c642e7273a56c696e657303a46e6f7465a464656164ab6b656570735f6d6f76657391ac636f6d6d6974206f776e6572a46164647391b5706970656c696e655f646f63756d656e74732e7273ac66696c655f6368616e6765739182a86c6f636174696f6e84a470617468d9216372617465732f657572656b612d706970656c696e652f7372632f6c69622e7273a46c696e6501a8656e645f6c696e6509a673796d626f6cab76616c75655f7479706573a66368616e6765a3616464a572656164739282a86c6f636174696f6e84a470617468d9216372617465732f657572656b612d706970656c696e652f7372632f6c69622e7273a46c696e650aa8656e645f6c696e6514a673796d626f6caf506970656c696e6543757453706563a3776879b274686520646f63756d656e7420736861706582a86c6f636174696f6e83a470617468d9216372617465732f657572656b612d706970656c696e652f7372632f6c69622e7273a46c696e651ea8656e645f6c696e65c0a3776879a86f6e65206c696e65ad617574686f726974795f6d617087a56f776e6572a4636f7265a6696e7075747391af747970656420646f63756d656e7473a76f75747075747391a9656e76656c6f706573ad646572697665645f737461746591ac64657269766564206b657973b1666f7262696464656e5f7772697465727391a34d4350ac7368617265645f706174687391a961646d697373696f6ead64656c6574696f6e5f6c696e65a36e2f61ac766572696669636174696f6e84a66275696c647391ab636172676f20636865636ba574657374739182a46e616d65a46b657973a470696e73af6f6e652064657269766564206b6579a86e656761746976659182a77061747465726ea75665633c75383ea573636f7065a9646f63756d656e7473a86f70657261746f7291a46e6f6e65a8657374696d61746588ab6c696e65735f6164646564cd0384ad6c696e65735f72656d6f76656400b2646570656e64656e636965735f616464656491a8736368656d617273b4646570656e64656e636965735f72656d6f76656490ad666f726d6174735f616464656491b66570697068616e792e706970656c696e652e2a2e7631af666f726d6174735f72656d6f76656490ad746172676574735f616464656490af746172676574735f72656d6f76656490a772756c696e677391b6657572656b612d73746174653a72756c696e673a5238a97175657374696f6e7391b8657572656b612d73746174653a7175657374696f6e3a5131 +finding.location-symbol eureka-state:finding:cut-3a.s2.F4 epiphany.pipeline.finding.v2 EpiphanyPipelineFindingDocument 918da863616d706169676eac657572656b612d7374617465a776657264696374be657572656b612d73746174653a766572646963743a6375742d33612e7332a56c6162656ca24634a572616e676582a462617365a83566393832323864a468656164a83566393832323864aa636f6e666964656e6365a9436f6e6669726d6564a87365766572697479a448696768a5636c61696dd9214120646f74746564206c6162656c20636f6d706f7365732074776f206b6579732eaa696e76617269616e747391ab6d696e642d61646d697473a96c6f636174696f6e739184a470617468d9216372617465732f657572656b612d706970656c696e652f7372632f6c69622e7273a46c696e6501a8656e645f6c696e6509a673796d626f6cab2631313533303930343938b06661696c7572655f7363656e6172696fbc54776f20646f63756d656e747320636c61696d206f6e65206b65792ea865766964656e63659183a46b696e64a454657374a76c6f6361746f72aa636172676f2074657374a6726573756c74a26f6baa707265636564656e747390a66f726967696eaa496e74726f6475636564 diff --git a/schemas/cultnet/epiphany.pipeline.cut_report.v2.schema.json b/schemas/cultnet/epiphany.pipeline.cut_report.v2.schema.json index 5d4947c..31adcbf 100644 --- a/schemas/cultnet/epiphany.pipeline.cut_report.v2.schema.json +++ b/schemas/cultnet/epiphany.pipeline.cut_report.v2.schema.json @@ -17,6 +17,16 @@ }, "path": { "$ref": "#/$defs/Short" + }, + "symbol": { + "anyOf": [ + { + "$ref": "#/$defs/Symbol" + }, + { + "type": "null" + } + ] } }, "required": [ @@ -268,6 +278,12 @@ "targets_removed" ], "type": "object" + }, + "Symbol": { + "description": "A name the location's lines must contain as written there (an\nidentifier or a YAML `&fileID`); not an identity. 1 to 128 bytes, no\nwhitespace and no control character.", + "maxLength": 128, + "minLength": 1, + "type": "string" } }, "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.pipeline.cut_report.v2.schema.json", diff --git a/schemas/cultnet/epiphany.pipeline.cut_spec.v2.schema.json b/schemas/cultnet/epiphany.pipeline.cut_spec.v2.schema.json index 47a0fc1..550c176 100644 --- a/schemas/cultnet/epiphany.pipeline.cut_spec.v2.schema.json +++ b/schemas/cultnet/epiphany.pipeline.cut_spec.v2.schema.json @@ -72,6 +72,16 @@ }, "path": { "$ref": "#/$defs/Short" + }, + "symbol": { + "anyOf": [ + { + "$ref": "#/$defs/Symbol" + }, + { + "type": "null" + } + ] } }, "required": [ @@ -185,6 +195,22 @@ "maxLength": 140, "type": "string" }, + "ReadAnchor": { + "description": "Code Hands must see but not change, in the spec's repo at the spec's base.", + "properties": { + "location": { + "$ref": "#/$defs/CodeLocation" + }, + "why": { + "$ref": "#/$defs/Short" + } + }, + "required": [ + "location", + "why" + ], + "type": "object" + }, "Sha": { "description": "A git commit id: 7-40 lowercase hex characters.", "maxLength": 40, @@ -267,6 +293,12 @@ ], "type": "object" }, + "Symbol": { + "description": "A name the location's lines must contain as written there (an\nidentifier or a YAML `&fileID`); not an identity. 1 to 128 bytes, no\nwhitespace and no control character.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, "Title": { "description": "A title: 1 to 200 UTF-8 bytes, enforced by admission; JSON Schema\nlength counts characters. Holds at least one alphanumeric character,\nno control character, and no bidi control character (`U+061C`,\n`U+200E`, `U+200F`, `U+202A`-`U+202E`, `U+2066`-`U+2069`).", "maxLength": 200, @@ -366,6 +398,13 @@ "maxItems": 16, "type": "array" }, + "reads": { + "items": { + "$ref": "#/$defs/ReadAnchor" + }, + "maxItems": 16, + "type": "array" + }, "repo": { "$ref": "#/$defs/OrgRepo" }, diff --git a/schemas/cultnet/epiphany.pipeline.finding.v2.schema.json b/schemas/cultnet/epiphany.pipeline.finding.v2.schema.json index d0c6a2f..aa776ce 100644 --- a/schemas/cultnet/epiphany.pipeline.finding.v2.schema.json +++ b/schemas/cultnet/epiphany.pipeline.finding.v2.schema.json @@ -17,6 +17,16 @@ }, "path": { "$ref": "#/$defs/Short" + }, + "symbol": { + "anyOf": [ + { + "$ref": "#/$defs/Symbol" + }, + { + "type": "null" + } + ] } }, "required": [ @@ -184,6 +194,12 @@ "description": "A campaign slug or key segment: label parts joined by `.`.", "maxLength": 64, "type": "string" + }, + "Symbol": { + "description": "A name the location's lines must contain as written there (an\nidentifier or a YAML `&fileID`); not an identity. 1 to 128 bytes, no\nwhitespace and no control character.", + "maxLength": 128, + "minLength": 1, + "type": "string" } }, "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.pipeline.finding.v2.schema.json", diff --git a/schemas/cultnet/epiphany.pipeline.follow_up.v2.schema.json b/schemas/cultnet/epiphany.pipeline.follow_up.v2.schema.json index 2458e05..5f85ace 100644 --- a/schemas/cultnet/epiphany.pipeline.follow_up.v2.schema.json +++ b/schemas/cultnet/epiphany.pipeline.follow_up.v2.schema.json @@ -17,6 +17,16 @@ }, "path": { "$ref": "#/$defs/Short" + }, + "symbol": { + "anyOf": [ + { + "$ref": "#/$defs/Symbol" + }, + { + "type": "null" + } + ] } }, "required": [ @@ -84,6 +94,12 @@ "description": "A campaign slug or key segment: label parts joined by `.`.", "maxLength": 64, "type": "string" + }, + "Symbol": { + "description": "A name the location's lines must contain as written there (an\nidentifier or a YAML `&fileID`); not an identity. 1 to 128 bytes, no\nwhitespace and no control character.", + "maxLength": 128, + "minLength": 1, + "type": "string" } }, "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.pipeline.follow_up.v2.schema.json", diff --git a/schemas/cultnet/huginn.mind_request.v1.schema.json b/schemas/cultnet/huginn.mind_request.v1.schema.json index 06dd8f7..909a8a8 100644 --- a/schemas/cultnet/huginn.mind_request.v1.schema.json +++ b/schemas/cultnet/huginn.mind_request.v1.schema.json @@ -162,6 +162,16 @@ }, "path": { "$ref": "#/$defs/Short" + }, + "symbol": { + "anyOf": [ + { + "$ref": "#/$defs/Symbol" + }, + { + "type": "null" + } + ] } }, "required": [ @@ -724,6 +734,13 @@ }, "maxItems": 16 }, + "reads": { + "type": "array", + "items": { + "$ref": "#/$defs/ReadAnchor" + }, + "maxItems": 16 + }, "repo": { "$ref": "#/$defs/OrgRepo" }, @@ -1579,6 +1596,22 @@ "text" ] }, + "ReadAnchor": { + "description": "Code Hands must see but not change, in the spec's repo at the spec's base.", + "type": "object", + "properties": { + "location": { + "$ref": "#/$defs/CodeLocation" + }, + "why": { + "$ref": "#/$defs/Short" + } + }, + "required": [ + "location", + "why" + ] + }, "ReportCommit": { "type": "object", "properties": { @@ -1866,6 +1899,12 @@ "targets_removed" ] }, + "Symbol": { + "description": "A name the location's lines must contain as written there (an\nidentifier or a YAML `&fileID`); not an identity. 1 to 128 bytes, no\nwhitespace and no control character.", + "type": "string", + "maxLength": 128, + "minLength": 1 + }, "TargetInvariant": { "type": "object", "properties": { diff --git a/schemas/cultnet/huginn.mind_response.v1.schema.json b/schemas/cultnet/huginn.mind_response.v1.schema.json index 4102b55..426cf7a 100644 --- a/schemas/cultnet/huginn.mind_response.v1.schema.json +++ b/schemas/cultnet/huginn.mind_response.v1.schema.json @@ -214,6 +214,16 @@ }, "path": { "$ref": "#/$defs/Short" + }, + "symbol": { + "anyOf": [ + { + "$ref": "#/$defs/Symbol" + }, + { + "type": "null" + } + ] } }, "required": [ @@ -1872,6 +1882,13 @@ }, "maxItems": 16 }, + "reads": { + "type": "array", + "items": { + "$ref": "#/$defs/ReadAnchor" + }, + "maxItems": 16 + }, "repo": { "$ref": "#/$defs/OrgRepo" }, @@ -3676,6 +3693,22 @@ "text" ] }, + "ReadAnchor": { + "description": "Code Hands must see but not change, in the spec's repo at the spec's base.", + "type": "object", + "properties": { + "location": { + "$ref": "#/$defs/CodeLocation" + }, + "why": { + "$ref": "#/$defs/Short" + } + }, + "required": [ + "location", + "why" + ] + }, "ReportCommit": { "type": "object", "properties": { @@ -3945,6 +3978,12 @@ "targets_removed" ] }, + "Symbol": { + "description": "A name the location's lines must contain as written there (an\nidentifier or a YAML `&fileID`); not an identity. 1 to 128 bytes, no\nwhitespace and no control character.", + "type": "string", + "maxLength": 128, + "minLength": 1 + }, "TargetInvariant": { "type": "object", "properties": {