{"node":{"id":"c89881f9-196f-47e1-98ed-d75a4571258d","handle":"c898","type":"note","authorName":"Vincent Yeung","intent":"learning","title":"Drawer 7: Shipping","aiSummary":null,"content":"**Open it when:** the site is ready to go live, or ready to hand to someone else.\n\nThe hosting detail lives in **Pattern: putting a site up on Cloudflare**. This drawer only holds what the design sources and our build add.\n\n## What we know\n\n**Before it goes live**\n- Without an automatic checker running on every edit, run impeccable's rule checker once at the end. A build that skips it ships every tell the checker exists to catch. [impeccable]\n- Fix a script error before judging anything else. The rule checker flags it as an error. [impeccable]\n- Check that no image is broken or empty. [impeccable]\n- Every image you ship should carry the prompt that made it, or where it came from. [impeccable]\n\n**Deploying**\n- One deploy path per site. When two machines both deployed the same site, a deploy from an out-of-date copy quietly put an older version back live. [our build]\n- Pull the latest before any work. Deploy only by pushing, so GitHub Actions does it. [our build]\n- When you swap in a real photo, give it a new file name. Images are usually cached for a year, so a returning visitor keeps the old one under the old name. [our build]\n- Cloudflare's own traps (headers that add up, caching, checking the right address) are in Pattern: putting a site up on Cloudflare. [our build]\n\n**Handing it to someone who isn't technical**\n- They'll change it by talking to their own AI. So give that AI a CLAUDE.md in the repo. [our build]\n- The CLAUDE.md says what to read first, that \"publish it\" means commit and push, never to deploy by hand, which words the owner never uses, and that a fact marked unconfirmed is never stated as fact. [our build]\n- Astryx's `init` writes its component list into AGENTS.md or CLAUDE.md, so the next AI knows the parts. [Astryx]\n\n## Tools in this drawer\n- **Tool: rule checker for AI tells (impeccable detect).** Pick it for the last scan before you push.\n- **Tool: technical audit (impeccable audit).** Pick it when you want a ranked list of what must be fixed before release.\n- **Tool: Astryx for agents (CLI and MCP server).** Pick it when the site is built on Astryx and the next person's AI must keep using it correctly.","capturedAt":"2026-10-29T09:31:23.315Z","createdAt":"2026-10-29T09:31:23.317Z","updatedAt":"2026-10-29T09:31:23.317Z","spanId":null,"contributor":null,"audiences":[{"kind":"public","createdAt":"2026-11-06T04:27:12.118Z"}],"fingerprint":"84a05c0f98df15e746ff5d66c0d77e2eda6e2b5fdafc026907c323e7bf6b9777","revisionNo":"1","structureHash":"cc128b64ee43e01d855adc5862ee568da80d0e14712743a7e5c1cbf4594437fc","page":"https://lattris.com/by/b/memories/c89881f9-196f-47e1-98ed-d75a4571258d"},"links":[{"direction":"out","verb":"references","reason":"Follow for hosting traps: headers that add up, caching, checking the right address.","hash":"9002a9c8cc9fde2f9b4638d738aba3165f56579d4894910b145e5fb61e5b85c5","node":{"id":"00c82fa2-90c7-4fe7-b145-9dd5238363b6","handle":"00c8","type":"note","title":"Pattern: putting a site up on Cloudflare","aiSummary":null,"erased":false,"href":"https://lattris.com/api/lattris/by/b/memories/00c82fa2-90c7-4fe7-b145-9dd5238363b6?links=1","fingerprint":"5e5270fb44f8acc1d0cf09a9185b752672803b9c8d462e248595c34c32ca282c","revisionNo":"4","structureHash":"69d402a179a28c7f173da5f223acc012de8e96105b9da11c58afd2619c9c8ada","intent":"recipe","authorName":"Vincent Yeung","page":"https://lattris.com/by/b/memories/00c82fa2-90c7-4fe7-b145-9dd5238363b6"}},{"direction":"out","verb":"references","reason":"Pick it when you want a ranked list of what must be fixed before release.","hash":"db2f1b7b1826b1c33cd7895294e6dd9678c4916f47f96fbd3985c9fa9c404ed7","node":{"id":"088fac12-576b-44c8-9d19-6f1c64d1e9db","handle":"088f","type":"note","title":"Tool: technical audit (impeccable audit)","aiSummary":null,"erased":false,"href":"https://lattris.com/api/lattris/by/b/memories/088fac12-576b-44c8-9d19-6f1c64d1e9db?links=1","fingerprint":"7024862c19bda4e5ae0fb26ad3f907a4aa33c2cf99f1b426bdfbcc897e0396ef","revisionNo":"1","structureHash":"019284935b09ef7f00cfa2c7df6bd588ba3f79032124647b34de298e84c06b4c","intent":"learning","authorName":"Vincent Yeung","page":"https://lattris.com/by/b/memories/088fac12-576b-44c8-9d19-6f1c64d1e9db"}},{"direction":"out","verb":"references","reason":"Follow back to pick a different drawer.","hash":"dfe48a49c720b3841ab5958b7850df640f8d0fee0391aa20fb828f0731016491","node":{"id":"5f8b457d-b87a-4e61-9af2-3008deaf37a9","handle":"5f8b","type":"note","title":"Front-end design: the toolbox","aiSummary":null,"erased":false,"href":"https://lattris.com/api/lattris/by/b/memories/5f8b457d-b87a-4e61-9af2-3008deaf37a9?links=1","fingerprint":"49e1c7f41f22c466c7ef1a993cab80b6dcbedab4552d2ac684133d60dea7e60b","revisionNo":"2","structureHash":"64df670c7bd82572e0ad9b2e06b8829d3b2e509be134591c04ea1fa281fca3ef","intent":"learning","authorName":"Vincent Yeung","page":"https://lattris.com/by/b/memories/5f8b457d-b87a-4e61-9af2-3008deaf37a9"}},{"direction":"out","verb":"references","reason":"Pick it for the last scan before you push.","hash":"d9d767559b92abce13ccf11d6f71777824394708220856f049ffe15266208c6d","node":{"id":"ac67d1f2-f6ea-41c4-a982-2696e9410fd3","handle":"ac67","type":"note","title":"Tool: rule checker for AI tells (impeccable detect)","aiSummary":null,"erased":false,"href":"https://lattris.com/api/lattris/by/b/memories/ac67d1f2-f6ea-41c4-a982-2696e9410fd3?links=1","fingerprint":"e339198a7edb93614129a6a94e5ba5b5257c715e4c1bde6d2cca64be2f438878","revisionNo":"1","structureHash":"82afdc94d333b4dc696c834ed2d0f9b552f2fbfdf0092c698725f66ddbd19f3b","intent":"learning","authorName":"Vincent Yeung","page":"https://lattris.com/by/b/memories/ac67d1f2-f6ea-41c4-a982-2696e9410fd3"}},{"direction":"out","verb":"references","reason":"Follow when a line marked [our build] needs its full context.","hash":"b6474a7f63ad0f46490e5340f43344cc95c7f51b028635d3954c422bc8e70c22","node":{"id":"ec50a07f-f1ee-4008-b3ce-b7e1a847d706","handle":"ec50","type":"note","title":"Pattern: building a website with AI","aiSummary":null,"erased":false,"href":"https://lattris.com/api/lattris/by/b/memories/ec50a07f-f1ee-4008-b3ce-b7e1a847d706?links=1","fingerprint":"62d9975e4cd521f59b3f3e71719dbcae5835d307e28597ea0104247bb6721bb2","revisionNo":"1","structureHash":"e63b54c083aa93ec272c5d03a5b587824c3c5a78373b8839600f59268a5f2083","intent":"learning","authorName":"Vincent Yeung","page":"https://lattris.com/by/b/memories/ec50a07f-f1ee-4008-b3ce-b7e1a847d706"}},{"direction":"out","verb":"references","reason":"Pick it when the site is built on Astryx and the next person's AI must keep using it correctly.","hash":"9f4d9ef747d5d315db32534edae8d8672bd4304589d86691505e63b1655ae9d3","node":{"id":"ff94b18f-43e0-4c83-a456-25cc433dbfd7","handle":"ff94","type":"note","title":"Tool: Astryx for agents (CLI and MCP server)","aiSummary":null,"erased":false,"href":"https://lattris.com/api/lattris/by/b/memories/ff94b18f-43e0-4c83-a456-25cc433dbfd7?links=1","fingerprint":"52ba88470bbc1372c6f33fff25d588124335bc2775fe4cde42e7e883e8d76896","revisionNo":"1","structureHash":"fca111ae4ffb0caf03fabbc5422e51fd57b197cf8653f02d652a50916226c131","intent":"learning","authorName":"Vincent Yeung","page":"https://lattris.com/by/b/memories/ff94b18f-43e0-4c83-a456-25cc433dbfd7"}},{"direction":"in","verb":"references","reason":"Follow for naming swapped images so caches don't serve old ones.","hash":"38b4c2eb9048fdba683c967d62340b807dae4422838e4b0178df6b4d1060abe2","node":{"id":"25a75047-6f28-4228-8728-3b212e241ed5","handle":"25a7","type":"note","title":"Drawer 2: The look","aiSummary":null,"erased":false,"href":"https://lattris.com/api/lattris/by/b/memories/25a75047-6f28-4228-8728-3b212e241ed5?links=1","fingerprint":"a7e6643893360cbb761c32fe35ac2ff509b39c054c2bef570dd0f45f48ae5652","revisionNo":"2","structureHash":"6c940c1ec3e9834f903982e4a24e1fec9929335b8b1c32092d274305442e70eb","intent":"learning","authorName":"Vincent Yeung","page":"https://lattris.com/by/b/memories/25a75047-6f28-4228-8728-3b212e241ed5"}},{"direction":"in","verb":"references","reason":"Open it when the site is ready to go live or to hand over.","hash":"3b27e8b9c9eea14b6d29bb155b9ee978ce801f7beb74358fb2fcca3f2a8c0294","node":{"id":"5f8b457d-b87a-4e61-9af2-3008deaf37a9","handle":"5f8b","type":"note","title":"Front-end design: the toolbox","aiSummary":null,"erased":false,"href":"https://lattris.com/api/lattris/by/b/memories/5f8b457d-b87a-4e61-9af2-3008deaf37a9?links=1","fingerprint":"49e1c7f41f22c466c7ef1a993cab80b6dcbedab4552d2ac684133d60dea7e60b","revisionNo":"2","structureHash":"64df670c7bd82572e0ad9b2e06b8829d3b2e509be134591c04ea1fa281fca3ef","intent":"learning","authorName":"Vincent Yeung","page":"https://lattris.com/by/b/memories/5f8b457d-b87a-4e61-9af2-3008deaf37a9"}}],"dictionary":{"lattris":"A personal knowledge base — how a person captures what they know as linked blocks they own and control. To understand how this knowledge base works: https://lattris.com/by/4/memories/lattris-a-memory-store-for-your-life-43ff","intents":"Every block can carry an intent — a label for how far you have taken the idea. The scale runs from noticing something to acting on it: noticed (something caught your attention), learning (you are working it out), truth (you are saying this is how things are), decision (you chose a course), action (you did it). Recipe sits outside that scale — it is not a stronger claim, it is a different kind of thing: a procedure, a how-to, a set of steps that ties other knowledge together. Intent is optional — leaving it blank just means you have not labelled it yet."},"instructions_to_ai":"This is knowledge from a personal knowledge base. Read it and consider how it's relevant to what the person you're talking to needs. Follow the linked blocks to explore further related topics if it might be useful to the user; open each at its page address. Start by letting the user know what this is about and how it may be relevant to them."}