@attalabs/aeg-forge-state
v0.19.2
Published
A generic, repo-parameterized adapter that derives an `@attalabs/aeg-core` `Tranche` purely from GitHub forge objects — no topology file required:
Downloads
2,448
Readme
@attalabs/aeg-forge-state
A generic, repo-parameterized adapter that derives an @attalabs/aeg-core Tranche
purely from GitHub forge objects — no topology file required:
- a Milestone titled exactly
<slug>→goal(description) +lifecycle(open/closed→active/complete);nullwhen no Milestone exists yet for that slug (a real, expected transitional state during rollout) tranche:<slug>-labeled Issues → theTask[]list, withid/titleparsed from the[<slug>] <id> — <title>Issue-title convention,projectsfrom the Issue body's**Project:**field — a FIELD, never a label: theproject:*label family was retired, and a residual one is ignored outright rather than merged — anddependsOn/conflictsWithedges parsed from each Issue's "Dependency rationale" section — hardened against both the topology file's single comma-joined backtick-span form and the multi-span prose form real Issue bodies also use
owner/repo are explicit parameters to every public function — never
hardcoded. All forge access shells out to the local gh CLI (the same
pattern already used throughout packages/aeg-core/bin/*.ts), not a second
octokit-based access path.
Two consumers
- This repo's own migration (
aeg-forge-state-v1tasks 3/4/5) — the live The gates and Vinaya Studio cut over from readingaeg-root/tranches/*.mdfiles to calling this package directly. vinaya-cli-v1's shippable CLI — imports or re-homes this package as the forge-backed half of Vinaya'sStateSourceseam, for arbitrary adopter repos, not only the one it was written in.
Keep the public API shaped for an arbitrary (owner, repo, slug) triple, not
this-repo-only conveniences — that genericity is the entire reason this
package exists as its own thing instead of living inside vinaya-cli-v1.
What this package does NOT do
- No writes to the forge (read-only, always).
- No
backlogderivation — the file's## Backlogsection is project-level prose with no owning forge object; forge-derived tranches always reportbacklog: []. No currently-active tranche's forge derivation loses real backlog content today because none has been proven to round-trip yet — a future task's problem, not this one's. - No amendment-prose ingestion —
dependsOn/conflictsWithare parsed from an Issue's structured "Dependency rationale" field only. A later free-text amendment appended below that field (a real pattern seen on this repo) is out of scope; see the golden-comparison test's doc comment for a concrete, evidenced example.
