189189</ head >
190190< body >
191191 < header >
192- < h1 > utf8proj Syntax Reference < span class ="version "> v0.2 .0</ span > </ h1 >
192+ < h1 > utf8proj Syntax Reference < span class ="version "> v0.10 .0</ span > </ h1 >
193193 < p > Native DSL grammar for project scheduling. File extension: < code > .proj</ code > </ p >
194194 < p > < a href ="index.html "> ← Back to Playground</ a > | < a href ="https://github.com/alanbld/utf8proj "> GitHub Repository</ a > </ p >
195195 </ header >
@@ -203,6 +203,8 @@ <h2>Contents</h2>
203203 < li > < a href ="#task "> Task</ a > </ li >
204204 < li > < a href ="#dependencies "> Dependencies</ a > </ li >
205205 < li > < a href ="#milestone "> Milestone</ a > </ li >
206+ < li > < a href ="#constraints "> Constraints</ a > </ li >
207+ < li > < a href ="#regimes "> Temporal Regimes</ a > </ li >
206208 < li > < a href ="#duration "> Duration & Dates</ a > </ li >
207209 </ ul >
208210 </ nav >
@@ -278,6 +280,7 @@ <h2>Task Declaration</h2>
278280 < span class ="keyword "> priority:</ span > < span class ="number "> 800</ span > < span class ="comment "> # higher = scheduled first</ span >
279281 < span class ="keyword "> complete:</ span > < span class ="number "> 50</ span > % < span class ="comment "> # progress tracking</ span >
280282 < span class ="keyword "> remaining:</ span > < span class ="number "> 3d</ span > < span class ="comment "> # explicit remaining work</ span >
283+ < span class ="keyword "> regime:</ span > work < span class ="comment "> # temporal regime (work/event/deadline)</ span >
281284 < span class ="keyword "> summary:</ span > < span class ="string "> "Impl"</ span > < span class ="comment "> # short display name</ span >
282285 < span class ="keyword "> note:</ span > < span class ="string "> "Detailed notes"</ span >
283286 < span class ="keyword "> tag:</ span > backend, critical
@@ -332,10 +335,74 @@ <h2>Milestone Declaration</h2>
332335 < p > Zero-duration markers for key dates.</ p >
333336 < pre > < span class ="keyword "> milestone</ span > go_live < span class ="string "> "Go-Live Date"</ span > {
334337 < span class ="keyword "> depends:</ span > testing, documentation
338+ < span class ="keyword "> regime:</ span > event < span class ="comment "> # can be scheduled on any day</ span >
339+ < span class ="keyword "> start_no_earlier_than:</ span > < span class ="number "> 2026-06-01</ span > < span class ="comment "> # date constraint</ span >
335340 < span class ="keyword "> payment:</ span > < span class ="number "> 50000</ span >
336341 < span class ="keyword "> note:</ span > < span class ="string "> "Production deployment"</ span >
337342}</ pre >
338343 < p > Alternatively, set < code > milestone: true</ code > on any task.</ p >
344+ < table >
345+ < tr > < th > Attribute</ th > < th > Description</ th > </ tr >
346+ < tr > < td > < code > depends</ code > </ td > < td > Dependencies on tasks or milestones</ td > </ tr >
347+ < tr > < td > < code > regime</ code > </ td > < td > Temporal regime: < code > work</ code > , < code > event</ code > , or < code > deadline</ code > </ td > </ tr >
348+ < tr > < td > < code > start_no_earlier_than</ code > </ td > < td > Earliest date the milestone can occur</ td > </ tr >
349+ < tr > < td > < code > finish_no_later_than</ code > </ td > < td > Latest date the milestone can occur</ td > </ tr >
350+ < tr > < td > < code > payment</ code > </ td > < td > Payment amount triggered by milestone</ td > </ tr >
351+ < tr > < td > < code > note</ code > </ td > < td > Description or notes</ td > </ tr >
352+ </ table >
353+ </ section >
354+
355+ < section id ="constraints ">
356+ < h2 > Task Constraints</ h2 >
357+ < p > Constrain when tasks can be scheduled.</ p >
358+ < pre > < span class ="keyword "> task</ span > deploy < span class ="string "> "Deployment"</ span > {
359+ < span class ="keyword "> effort:</ span > < span class ="number "> 2d</ span >
360+ < span class ="keyword "> start_no_earlier_than:</ span > < span class ="number "> 2026-03-01</ span >
361+ < span class ="keyword "> finish_no_later_than:</ span > < span class ="number "> 2026-03-15</ span >
362+ }</ pre >
363+ < table >
364+ < tr > < th > Constraint</ th > < th > Meaning</ th > </ tr >
365+ < tr > < td > < code > must_start_on</ code > </ td > < td > Task must start on exact date</ td > </ tr >
366+ < tr > < td > < code > must_finish_on</ code > </ td > < td > Task must finish on exact date</ td > </ tr >
367+ < tr > < td > < code > start_no_earlier_than</ code > </ td > < td > Task cannot start before date</ td > </ tr >
368+ < tr > < td > < code > start_no_later_than</ code > </ td > < td > Task must start by date</ td > </ tr >
369+ < tr > < td > < code > finish_no_earlier_than</ code > </ td > < td > Task cannot finish before date</ td > </ tr >
370+ < tr > < td > < code > finish_no_later_than</ code > </ td > < td > Task must finish by date</ td > </ tr >
371+ </ table >
372+ </ section >
373+
374+ < section id ="regimes ">
375+ < h2 > Temporal Regimes</ h2 >
376+ < p > Control how tasks interact with calendars (RFC-0012).</ p >
377+ < pre > < span class ="comment "> # Effort-bearing task: respects working days</ span >
378+ < span class ="keyword "> task</ span > develop < span class ="string "> "Development"</ span > {
379+ < span class ="keyword "> regime:</ span > work
380+ < span class ="keyword "> effort:</ span > < span class ="number "> 10d</ span >
381+ < span class ="keyword "> assign:</ span > dev
382+ }
383+
384+ < span class ="comment "> # Event: can occur on any calendar day (including weekends)</ span >
385+ < span class ="keyword "> milestone</ span > release < span class ="string "> "Product Release"</ span > {
386+ < span class ="keyword "> regime:</ span > event
387+ < span class ="keyword "> depends:</ span > develop
388+ < span class ="keyword "> start_no_earlier_than:</ span > < span class ="number "> 2026-06-15</ span >
389+ }
390+
391+ < span class ="comment "> # Deadline: contractual/regulatory date</ span >
392+ < span class ="keyword "> milestone</ span > compliance < span class ="string "> "Compliance Deadline"</ span > {
393+ < span class ="keyword "> regime:</ span > deadline
394+ < span class ="keyword "> finish_no_later_than:</ span > < span class ="number "> 2026-06-30</ span >
395+ }</ pre >
396+ < table >
397+ < tr > < th > Regime</ th > < th > Calendar Behavior</ th > < th > Use Case</ th > </ tr >
398+ < tr > < td > < code > work</ code > </ td > < td > Respects working days</ td > < td > Effort-bearing tasks (default)</ td > </ tr >
399+ < tr > < td > < code > event</ code > </ td > < td > Any calendar day</ td > < td > Releases, launches, go-lives</ td > </ tr >
400+ < tr > < td > < code > deadline</ code > </ td > < td > Exact date required</ td > < td > Contractual, regulatory dates</ td > </ tr >
401+ </ table >
402+ < div class ="note ">
403+ < strong > Default:</ strong > All tasks and milestones use < code > regime: work</ code > unless specified.< br >
404+ < strong > Event regime</ strong > allows scheduling on weekends/holidays when constraints require it.
405+ </ div >
339406 </ section >
340407
341408 < section id ="duration ">
0 commit comments