𝗔 𝗙𝗼𝗹𝗱𝗲𝗿 𝗡𝗮𝗺𝗲 𝗜𝘀 𝗡𝗼𝘁 𝗔 𝗣𝗿𝗼𝗷𝗲𝗰𝘁 𝗜𝗱𝗲𝗻𝘁𝗶𝘁𝘆
ஒரு ஃபோல்டர் பாதை என்பது ஒரு வழித்தடம். ஒரு திட்டம் தற்போது எங்குள்ளது என்பதை அது ஒரு கருவிக்கு (tool) தெரிவிக்கிறது. ஆனால் ஒரு திட்டத்தின் அடையாளம் (project identity) என்பது வேறானது.
அடையாளம் பின்வரும் பொதுவான மாற்றங்களையும் தாக்குப் பிடிக்க வேண்டும்:
- கோப்பகத்தின் (directory) பெயரை மாற்றுதல்
- இயந்திரங்களுக்கு இடையே திட்டத்தை நகர்த்துதல்
- புதிய பாதைக்கு ரெப்போவை (repo) குளோன் செய்தல்
- ஒரே திட்டத்தின் பல செக்-அவுட்களைப் (checkouts) பயன்படுத்துதல்
அடையாளம் பாதையைச் சார்ந்து இருந்தால், இந்தச் செயல்கள் ஆபத்தானவை ஆகிவிடும். பாதை சரியாக இருக்கலாம், ஆனால் அது அந்தத் திட்டம் ஒன்றுதான் என்பதை நிரூபிக்கத் தவறிவிடும். இது நிலையைச் (state) சேமிப்பதற்கான ஒரு மோசமான திறவுகோலாக (key) அமைகிறது.
இதைத் தீர்க்க நான் APC மற்றும் APX ஆகியவற்றைக் கொண்டு ஒரு பிரிக்கப்பட்ட வடிவமைப்பைப் (split design) பயன்படுத்துகிறேன்.
APC திட்ட ஒப்பந்தத்தைக் (project contract) கையாள்கிறது. இது ரெப்போசிட்டரியில் (repository) இருக்கும். APX ரன்டைம் நிலையை (runtime state) கையாள்கிறது. இது ரெப்போசிட்டரிக்கு வெளியே இருக்கும்.
APC ஒரு நிலையான நங்கூரத்தை (stable anchor) உருவாக்க குறிப்பிட்ட கோப்புகளைப் பயன்படுத்துகிறது:
- AGENTS.md ரூட் ஒப்பந்தத்திற்காக (root contract)
- .apc/project.json திட்ட மெட்டாடேட்டாவிற்காக (project metadata)
- .apc/agents/*.md ஏஜென்ட் வரையறைகளுக்காக (agent definitions)
- .apc/mcps.json MCP குறிப்புகளுக்காக (MCP hints)
.apc/project.json கோப்பு மிகவும் சிறியது. இதில் ஒரு பெயர் மற்றும் நிலையான ID மட்டுமே இருக்கும். இது ஒரு அடையாளக் குறிப்பு (marker) மட்டுமே, பெரிய கான்ஃபிக் (config) கோப்பு அல்ல.
ஒரு நேரடி செக்-அவுட்டை (live checkout) நிலையான பதிவோடு இணைக்க APX இந்த கோப்பைப் பயன்படுத்துகிறது. பாதைகள் APX திட்டத்தைக் கண்டறிய உதவுகின்றன. திட்டத்தைக் கண்டறிந்த பிறகு, அதை நிலையாக வைத்திருக்க மெட்டாடேட்டா உதவுகிறது.
இந்த வடிவமைப்பு ரெப்போவை (repo) சுத்தமாக வைத்திருக்கும். செஷன் லாக்ஸ் (session logs) மற்றும் செய்தி வரலாறு (message history) போன்ற ரன்டைம் தரவுகள் APX சேமிப்பகத்திலேயே இருக்கும். அவை உங்கள் git வரலாற்றை (git history) அசுத்தப்படுத்தாது.
நீங்கள் பாதைகளைச் சார்ந்து இருக்கும்போது, பின்வரும் தோல்விகளைச் சந்திக்க நேரிடும்:
- பாதைகள் மாறுகின்றன
- நிலை (state) உடைந்து போகிறது
- கருவி தவறான ஊகங்களைச் செய்கிறது
- உருவாக்குவதற்குப் பதிலாக பெயர்களைச் சரிசெய்வதிலேயே (debugging) நேரத்தைச் செலவிடுகிறீர்கள்
ஒரு நிலையான அடையாளம் இந்த இரைச்சலை (noise) நீக்குகிறது. இது குறியீடு ஆய்வுகளை (code reviews) எளிதாக்குகிறது. உங்கள் டிஃப்களில் (diffs) தற்செயலான ரன்டைம் வெளியீடுகளுக்குப் பதிலாக திட்டத்தின் உண்மைகளை நீங்கள் காண்பீர்கள்.
இதன் எல்லை எளிமையானது:
- AGENTS.md: திட்டம் எதை எதிர்பார்க்கிறது
- .apc/project.json: திட்டம் என்னவாக இருக்கிறது
- ~/.apx/: அதன் மீது வேலை செய்யும் போது என்ன நடந்தது
ஒரு திட்டத்திற்கு ஒரு நிலையான நங்கூரம் தேவை. ஃபோல்டர் பாதை மிகவும் நிலையற்றது (volatile). ரன்டைம் மிகவும் இரைச்சலானது (noisy). ஒரு ரெப்போ ஒப்பந்தம் மற்றும் ஒரு மெட்டாடேட்டா கோப்பு என்பதே சரியான அளவாகும்.
Source: https://dev.to/tecnomanu/a-folder-name-is-not-a-project-identity-4eca
Optional learning community: https://t.me/GyaanSetuAi
