)]}'
{"tvix/eval/docs/build-references.md":[{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"fa01aefbbfe04e383038ceab81b3c35aad1292b5","unresolved":true,"context_lines":[{"line_number":30,"context_line":"   from something like `src \u003d ./.` or `src \u003d ./foo.txt`)."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"   In the case of `unsafeDiscardOutputDependency` this is used to pass a raw"},{"line_number":33,"context_line":"   derivation file, but *not* its outputs."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Lets introduce names for these (in the same order) to make them easier to"},{"line_number":36,"context_line":"reference below:"}],"source_content_type":"text/x-markdown","patch_set":1,"id":"63731430_2ef13779","line":33,"updated":"2023-01-11 07:25:24.000000000","message":"*not* pull in its outputs.","commit_id":"f1e6369614deb88fe0b225c4833524c529d8ec0f"},{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"e1e51df168bfee2e71ee13345f36b1cc0acb37d8","unresolved":false,"context_lines":[{"line_number":30,"context_line":"   from something like `src \u003d ./.` or `src \u003d ./foo.txt`)."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"   In the case of `unsafeDiscardOutputDependency` this is used to pass a raw"},{"line_number":33,"context_line":"   derivation file, but *not* its outputs."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Lets introduce names for these (in the same order) to make them easier to"},{"line_number":36,"context_line":"reference below:"}],"source_content_type":"text/x-markdown","patch_set":1,"id":"209df15a_d79d281a","line":33,"in_reply_to":"63731430_2ef13779","updated":"2023-01-11 09:30:00.000000000","message":"Done","commit_id":"f1e6369614deb88fe0b225c4833524c529d8ec0f"},{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"fa01aefbbfe04e383038ceab81b3c35aad1292b5","unresolved":true,"context_lines":[{"line_number":53,"context_line":"derivation in any way."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Note: This explicitly does *not* include simply writing a literal string"},{"line_number":56,"context_line":"containing a store path (whether valid or not)."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"## Derivation inputs"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":1,"id":"a3b2ec9b_6103431c","line":56,"updated":"2023-01-11 07:25:24.000000000","message":"There also is builtins.storePath (https://nixos.org/manual/nix/stable/language/builtins.html#builtins-storePath), which can do the above. We should probably mention it here.","commit_id":"f1e6369614deb88fe0b225c4833524c529d8ec0f"},{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"e1e51df168bfee2e71ee13345f36b1cc0acb37d8","unresolved":false,"context_lines":[{"line_number":53,"context_line":"derivation in any way."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Note: This explicitly does *not* include simply writing a literal string"},{"line_number":56,"context_line":"containing a store path (whether valid or not)."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"## Derivation inputs"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":1,"id":"a8212902_68b30638","line":56,"in_reply_to":"a3b2ec9b_6103431c","updated":"2023-01-11 09:30:00.000000000","message":"Done","commit_id":"f1e6369614deb88fe0b225c4833524c529d8ec0f"},{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"fa01aefbbfe04e383038ceab81b3c35aad1292b5","unresolved":true,"context_lines":[{"line_number":62,"context_line":"`builtins.derivation`, which isn\u0027t actually a builtin, wraps)."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"`inputDrvs` is represented by a map of derivation paths to the set of their"},{"line_number":65,"context_line":"outputs that is accessible"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"TODO: What happens if the set is empty? Somebody claimed this means all outputs."},{"line_number":68,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":1,"id":"d796383f_48b3b17d","line":65,"updated":"2023-01-11 07:25:24.000000000","message":"Dot at the end of the phrase. What means \"accessible\" here? The list of output names referenced in the .drv? Or the list if all outputs that .drv has?","commit_id":"f1e6369614deb88fe0b225c4833524c529d8ec0f"},{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"e1e51df168bfee2e71ee13345f36b1cc0acb37d8","unresolved":false,"context_lines":[{"line_number":62,"context_line":"`builtins.derivation`, which isn\u0027t actually a builtin, wraps)."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"`inputDrvs` is represented by a map of derivation paths to the set of their"},{"line_number":65,"context_line":"outputs that is accessible"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"TODO: What happens if the set is empty? Somebody claimed this means all outputs."},{"line_number":68,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":1,"id":"93d18834_2607ab05","line":65,"in_reply_to":"d796383f_48b3b17d","updated":"2023-01-11 09:30:00.000000000","message":"It\u0027s the *set* of all outputs of that drv that were contained in the context, and which form part of the build closure of that derivation. In practice I suppose it uses this for granular sandboxing, as build sequencing is output-independent.","commit_id":"f1e6369614deb88fe0b225c4833524c529d8ec0f"},{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"fa01aefbbfe04e383038ceab81b3c35aad1292b5","unresolved":true,"context_lines":[{"line_number":64,"context_line":"`inputDrvs` is represented by a map of derivation paths to the set of their"},{"line_number":65,"context_line":"outputs that is accessible"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"TODO: What happens if the set is empty? Somebody claimed this means all outputs."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"`inputSrcs` is represented by a set of paths."},{"line_number":70,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":1,"id":"89cf79c3_cda22788","line":67,"updated":"2023-01-11 07:25:24.000000000","message":"Do we have examples in nixpkgs with this condition?","commit_id":"f1e6369614deb88fe0b225c4833524c529d8ec0f"},{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"e1e51df168bfee2e71ee13345f36b1cc0acb37d8","unresolved":false,"context_lines":[{"line_number":64,"context_line":"`inputDrvs` is represented by a map of derivation paths to the set of their"},{"line_number":65,"context_line":"outputs that is accessible"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"TODO: What happens if the set is empty? Somebody claimed this means all outputs."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"`inputSrcs` is represented by a set of paths."},{"line_number":70,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":1,"id":"e9dac1a3_d352569e","line":67,"in_reply_to":"89cf79c3_cda22788","updated":"2023-01-11 09:30:00.000000000","message":"We don\u0027t have a way to check (yet). However, I don\u0027t see a code path in C++ Nix that would create this condition (so far). Hence keeping a todo around.","commit_id":"f1e6369614deb88fe0b225c4833524c529d8ec0f"},{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"fa01aefbbfe04e383038ceab81b3c35aad1292b5","unresolved":true,"context_lines":[{"line_number":150,"context_line":"`unsafeDiscardStringContext` is often used as a workaround for avoiding IFD in"},{"line_number":151,"context_line":"inconvenient places (e.g. in the TVL depot pipeline generation). This is"},{"line_number":152,"context_line":"unnecessary in Tvix. We should evaluate which other uses exist, and act on them"},{"line_number":153,"context_line":"appropriately."},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"The initial danger with diverging here is that we might cause derivation hash"},{"line_number":156,"context_line":"discrepancies between Tvix and C++ Nix, which can make initial comparisons of"}],"source_content_type":"text/x-markdown","patch_set":1,"id":"d21ba8a9_182ab708","line":153,"updated":"2023-01-11 07:25:24.000000000","message":"It\u0027s also used to avoid pulling in a whole closure in some cases.","commit_id":"f1e6369614deb88fe0b225c4833524c529d8ec0f"},{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"0625c837c28524eee4f3f1f3d8a51cb11b69c278","unresolved":true,"context_lines":[{"line_number":150,"context_line":"`unsafeDiscardStringContext` is often used as a workaround for avoiding IFD in"},{"line_number":151,"context_line":"inconvenient places (e.g. in the TVL depot pipeline generation). This is"},{"line_number":152,"context_line":"unnecessary in Tvix. We should evaluate which other uses exist, and act on them"},{"line_number":153,"context_line":"appropriately."},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"The initial danger with diverging here is that we might cause derivation hash"},{"line_number":156,"context_line":"discrepancies between Tvix and C++ Nix, which can make initial comparisons of"}],"source_content_type":"text/x-markdown","patch_set":1,"id":"b01613c9_3e1bf48b","line":153,"in_reply_to":"4d4bb01a_2d6969cd","updated":"2023-01-11 11:21:02.000000000","message":"no, check the sshd initrd config example, which uses it to avoid pulling in too much stuff into initrd","commit_id":"f1e6369614deb88fe0b225c4833524c529d8ec0f"},{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"d2d80f67618d17c24924348e24e4fc23e93acba5","unresolved":false,"context_lines":[{"line_number":150,"context_line":"`unsafeDiscardStringContext` is often used as a workaround for avoiding IFD in"},{"line_number":151,"context_line":"inconvenient places (e.g. in the TVL depot pipeline generation). This is"},{"line_number":152,"context_line":"unnecessary in Tvix. We should evaluate which other uses exist, and act on them"},{"line_number":153,"context_line":"appropriately."},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"The initial danger with diverging here is that we might cause derivation hash"},{"line_number":156,"context_line":"discrepancies between Tvix and C++ Nix, which can make initial comparisons of"}],"source_content_type":"text/x-markdown","patch_set":1,"id":"280e05c2_88c0a9f0","line":153,"in_reply_to":"b01613c9_3e1bf48b","updated":"2023-01-11 12:23:59.000000000","message":"I checked that example and quite a few others. The initrd one is a workaround for incorrectly retained string context in cppnix (a bug). It seems there are no valid uses in nixpkgs itself. There might be some in the wild (like [0]), but I haven\u0027t verified those yet.\n\nThe sentence remains true as is :)\n\n[0]: https://github.com/infinisil/nixus/blob/master/modules/secrets.nix","commit_id":"f1e6369614deb88fe0b225c4833524c529d8ec0f"},{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"e1e51df168bfee2e71ee13345f36b1cc0acb37d8","unresolved":true,"context_lines":[{"line_number":150,"context_line":"`unsafeDiscardStringContext` is often used as a workaround for avoiding IFD in"},{"line_number":151,"context_line":"inconvenient places (e.g. in the TVL depot pipeline generation). This is"},{"line_number":152,"context_line":"unnecessary in Tvix. We should evaluate which other uses exist, and act on them"},{"line_number":153,"context_line":"appropriately."},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"The initial danger with diverging here is that we might cause derivation hash"},{"line_number":156,"context_line":"discrepancies between Tvix and C++ Nix, which can make initial comparisons of"}],"source_content_type":"text/x-markdown","patch_set":1,"id":"4d4bb01a_2d6969cd","line":153,"in_reply_to":"d21ba8a9_182ab708","updated":"2023-01-11 09:30:00.000000000","message":"Isn\u0027t that pretty much exclusively done to avoid IFD? The only useful thing you could do with that is let the actual build happen later, otherwise you just receive an output referencing things that don\u0027t exist (which you probably can\u0027t do anything with).","commit_id":"f1e6369614deb88fe0b225c4833524c529d8ec0f"},{"author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"change_message_id":"a2d90efb8bd9e42ce180d1e881a57fb6396903ea","unresolved":true,"context_lines":[{"line_number":21,"context_line":"2. `\u003d\u003cdrv_path\u003e`"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"   This format is used for a special case where a derivation attribute directly"},{"line_number":24,"context_line":"   refers to a derivation path (e.g. by accessing `.drvPath` on a derivation)."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"   Note: In C++ Nix this case is quite special and actually requires a"},{"line_number":27,"context_line":"   store-database query during evaluation."}],"source_content_type":"text/x-markdown","patch_set":3,"id":"f18fe9ac_8add6bc2","line":24,"updated":"2023-01-11 11:24:09.000000000","message":"Is it semantically equivalent to having !\u003cout\u003e!\u003cdrv\u003e for every output in the string context or does anything else happen?","commit_id":"8b53ad11f8969c6c2d65e91060ba8883e99518d8"},{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"6391afd7c56ce33170fbd4547cc57b7858eee487","unresolved":false,"context_lines":[{"line_number":21,"context_line":"2. `\u003d\u003cdrv_path\u003e`"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"   This format is used for a special case where a derivation attribute directly"},{"line_number":24,"context_line":"   refers to a derivation path (e.g. by accessing `.drvPath` on a derivation)."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"   Note: In C++ Nix this case is quite special and actually requires a"},{"line_number":27,"context_line":"   store-database query during evaluation."}],"source_content_type":"text/x-markdown","patch_set":3,"id":"8d0a0fc4_9729d4fe","line":24,"in_reply_to":"06b5b6b7_e578fa6d","updated":"2023-01-12 11:01:38.000000000","message":"Ack","commit_id":"8b53ad11f8969c6c2d65e91060ba8883e99518d8"},{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"d2d80f67618d17c24924348e24e4fc23e93acba5","unresolved":true,"context_lines":[{"line_number":21,"context_line":"2. `\u003d\u003cdrv_path\u003e`"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"   This format is used for a special case where a derivation attribute directly"},{"line_number":24,"context_line":"   refers to a derivation path (e.g. by accessing `.drvPath` on a derivation)."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"   Note: In C++ Nix this case is quite special and actually requires a"},{"line_number":27,"context_line":"   store-database query during evaluation."}],"source_content_type":"text/x-markdown","patch_set":3,"id":"06b5b6b7_e578fa6d","line":24,"in_reply_to":"f18fe9ac_8add6bc2","updated":"2023-01-11 12:23:59.000000000","message":"That only covers one half of it, it would also be having `!\u003cout\u003e!\u003cdrv\u003e` entries for every other path that *occurs* inside the drv (including its inputs).","commit_id":"8b53ad11f8969c6c2d65e91060ba8883e99518d8"},{"author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"change_message_id":"a2d90efb8bd9e42ce180d1e881a57fb6396903ea","unresolved":true,"context_lines":[{"line_number":38,"context_line":"```rust"},{"line_number":39,"context_line":"enum BuildReference {"},{"line_number":40,"context_line":"    /// !\u003coutput_name\u003e!\u003cdrv_path\u003e"},{"line_number":41,"context_line":"    SingleOutput(OutputName, DrvPath),"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    /// \u003d\u003cdrv_path\u003e"},{"line_number":44,"context_line":"    DrvClosure(DrvPath),"}],"source_content_type":"text/x-markdown","patch_set":3,"id":"6c822bc3_fb63c519","line":41,"updated":"2023-01-11 11:24:09.000000000","message":"C++ Nix (on master) calls these `NixStringContextElem::Built`.","commit_id":"8b53ad11f8969c6c2d65e91060ba8883e99518d8"},{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"d2d80f67618d17c24924348e24e4fc23e93acba5","unresolved":false,"context_lines":[{"line_number":38,"context_line":"```rust"},{"line_number":39,"context_line":"enum BuildReference {"},{"line_number":40,"context_line":"    /// !\u003coutput_name\u003e!\u003cdrv_path\u003e"},{"line_number":41,"context_line":"    SingleOutput(OutputName, DrvPath),"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    /// \u003d\u003cdrv_path\u003e"},{"line_number":44,"context_line":"    DrvClosure(DrvPath),"}],"source_content_type":"text/x-markdown","patch_set":3,"id":"e34bc41d_1f723ed1","line":41,"in_reply_to":"6c822bc3_fb63c519","updated":"2023-01-11 12:23:59.000000000","message":"Ack","commit_id":"8b53ad11f8969c6c2d65e91060ba8883e99518d8"},{"author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"change_message_id":"a2d90efb8bd9e42ce180d1e881a57fb6396903ea","unresolved":true,"context_lines":[{"line_number":41,"context_line":"    SingleOutput(OutputName, DrvPath),"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    /// \u003d\u003cdrv_path\u003e"},{"line_number":44,"context_line":"    DrvClosure(DrvPath),"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    /// \u003cpath\u003e"},{"line_number":47,"context_line":"    Path(StorePath),"}],"source_content_type":"text/x-markdown","patch_set":3,"id":"9a25fe61_88b4c988","line":44,"updated":"2023-01-11 11:24:09.000000000","message":"C++ Nix (on master) calls these `NixStringContextElem::DrvDeep`.","commit_id":"8b53ad11f8969c6c2d65e91060ba8883e99518d8"},{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"d2d80f67618d17c24924348e24e4fc23e93acba5","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    SingleOutput(OutputName, DrvPath),"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    /// \u003d\u003cdrv_path\u003e"},{"line_number":44,"context_line":"    DrvClosure(DrvPath),"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    /// \u003cpath\u003e"},{"line_number":47,"context_line":"    Path(StorePath),"}],"source_content_type":"text/x-markdown","patch_set":3,"id":"babbbf1e_55461289","line":44,"in_reply_to":"9a25fe61_88b4c988","updated":"2023-01-11 12:23:59.000000000","message":"Ack","commit_id":"8b53ad11f8969c6c2d65e91060ba8883e99518d8"},{"author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"change_message_id":"a2d90efb8bd9e42ce180d1e881a57fb6396903ea","unresolved":true,"context_lines":[{"line_number":44,"context_line":"    DrvClosure(DrvPath),"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    /// \u003cpath\u003e"},{"line_number":47,"context_line":"    Path(StorePath),"},{"line_number":48,"context_line":"}"},{"line_number":49,"context_line":"```"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":3,"id":"80261717_66ce565c","line":47,"updated":"2023-01-11 11:24:09.000000000","message":"C++ Nix (on master) calls these `NixStringContextElem::Opaque`.","commit_id":"8b53ad11f8969c6c2d65e91060ba8883e99518d8"},{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"d2d80f67618d17c24924348e24e4fc23e93acba5","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    DrvClosure(DrvPath),"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    /// \u003cpath\u003e"},{"line_number":47,"context_line":"    Path(StorePath),"},{"line_number":48,"context_line":"}"},{"line_number":49,"context_line":"```"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":3,"id":"1a425680_bb9020a4","line":47,"in_reply_to":"80261717_66ce565c","updated":"2023-01-11 12:23:59.000000000","message":"Ack","commit_id":"8b53ad11f8969c6c2d65e91060ba8883e99518d8"},{"author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"change_message_id":"a2d90efb8bd9e42ce180d1e881a57fb6396903ea","unresolved":true,"context_lines":[{"line_number":49,"context_line":"```"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"String contexts are, broadly speaking, created whenever a string is the result"},{"line_number":52,"context_line":"of a computation (e.g. string interpolation) that used a *computed* path or"},{"line_number":53,"context_line":"derivation in any way."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Note: This explicitly does *not* include simply writing a literal string"}],"source_content_type":"text/x-markdown","patch_set":3,"id":"679061dd_3156c092","line":52,"range":{"start_line":52,"start_character":23,"end_line":52,"end_character":43},"updated":"2023-01-11 11:24:09.000000000","message":"Some kinds of (invisible) coercion, e.g. what builtins.import, builtins.readFile do with their argument.","commit_id":"8b53ad11f8969c6c2d65e91060ba8883e99518d8"},{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"d2d80f67618d17c24924348e24e4fc23e93acba5","unresolved":true,"context_lines":[{"line_number":49,"context_line":"```"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"String contexts are, broadly speaking, created whenever a string is the result"},{"line_number":52,"context_line":"of a computation (e.g. string interpolation) that used a *computed* path or"},{"line_number":53,"context_line":"derivation in any way."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Note: This explicitly does *not* include simply writing a literal string"}],"source_content_type":"text/x-markdown","patch_set":3,"id":"988b5443_18fb9a0b","line":52,"range":{"start_line":52,"start_character":23,"end_line":52,"end_character":43},"in_reply_to":"679061dd_3156c092","updated":"2023-01-11 12:23:59.000000000","message":"Yeah, all of their operations add these things to Tvix\u0027s known paths.","commit_id":"8b53ad11f8969c6c2d65e91060ba8883e99518d8"},{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"6391afd7c56ce33170fbd4547cc57b7858eee487","unresolved":false,"context_lines":[{"line_number":49,"context_line":"```"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"String contexts are, broadly speaking, created whenever a string is the result"},{"line_number":52,"context_line":"of a computation (e.g. string interpolation) that used a *computed* path or"},{"line_number":53,"context_line":"derivation in any way."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Note: This explicitly does *not* include simply writing a literal string"}],"source_content_type":"text/x-markdown","patch_set":3,"id":"9f02ec76_784ac16d","line":52,"range":{"start_line":52,"start_character":23,"end_line":52,"end_character":43},"in_reply_to":"988b5443_18fb9a0b","updated":"2023-01-12 11:01:38.000000000","message":"Ack","commit_id":"8b53ad11f8969c6c2d65e91060ba8883e99518d8"}]}
