Repository navigation
ROADMAP M1: run data moves to .aladdin/ with a .agentic/ fallback, ALADDIN_* aliases, aloop layout - #21
Merged
Conversation
Fresh projects keep transcripts, budgets, the ledger, logs, state, host records and task worktrees under .aladdin/, next to config.yaml, guarded by a plugin-written .aladdin/.gitignore. A project that still has .agentic/ keeps using it until `aloop layout migrate` moves it. Every AGENTIC_<KEY> env var and settings key accepts ALADDIN_<KEY> (AGENTIC_ wins when both are set). The gates and budget find the task contract in either state dir, so a supervisor writing the literal legacy path is still understood. Worktree-local markers keep their name for now. Tests: scripts/test/layout.test.py (6 checks); every suite runs on the new layout; conformance 58/58. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014j4wLin3oJTtnvjE9Lq2VV
adeelahmad
changed the base branch from
claude/project-thread-vm6wyr-surface
to
master
October 18, 2026 12:05
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Requested by Adeel · project thread
Stacked on #16 (base is that branch; retargeted to master once it lands).
Before: the plugin kept its run data (transcripts, budgets, the token ledger, logs, state, host records, task worktrees) in
.agentic/and read onlyAGENTIC_*keys, while the committedconfig.yamlalready lived in.aladdin/; ROADMAP M1 listed the move as deferred.After: a fresh project keeps all run data in
.aladdin/, next toconfig.yaml, and the plugin writes.aladdin/.gitignoreso nothing there butconfig.yamlcan reach a commit. A project that already has.agentic/keeps using it unchanged untilaloop layout migratemoves it (refused while worker worktrees are live).aloop layout showsays which dir is live and why;aloop layout checkfails unless the run data is git-ignored (run bymake test-hosts). EveryAGENTIC_<KEY>env var and settings key acceptsALADDIN_<KEY>(AGENTIC_wins when both are set). The gates,gate-dispatchandbudgetfind the task contract in either state dir, so a supervisor that writes the literal legacy path is still understood. The decision (.aladdin/, not.aloop/) is recorded in ROADMAP M1.The worktree-local markers (
.agentic/task.env,budget-exceeded,scaffold-symbols) keep their name in this PR: hosts and older sprints write them, so they get their own read-old window later.How:
_paths.sh/_paths.pyresolve the home once (home_name: any run dir in.aladdin/wins, else an existing.agentic/, else.aladdin/), normaliseALADDIN_*intoAGENTIC_*, and exposecontract_path/agentic_contract_path; the few tools with their own path logic (worktree-create,worktree-hygiene, the OpenCode plugin,gate-supervisor-scope,gate-structural-integrity,_gatelibfilters,stats,host,budget,_usage) use the resolved dir;bin/layoutis new. SKILL.md, OVERVIEW, TRACKING, CHANGELOG and bin/README describe the layout.Evidence:
scripts/test/layout.test.py, 6 checks, inmake test-hosts: fresh project in.aladdin/with onlyconfig.yamlcommittable; legacy.agentic/untouched;migratemoves, guards, idempotent;ALADDIN_*read everywhere,AGENTIC_*wins;layout checkrefuses an unguarded dir; the contract is found from either dir by bash, python andgate-dispatchmake test-hosts(all suites +host check+layout check+ tracking 39 ok),make conformance58/58, shellcheck, pyflakes, json, eval-validate,claude plugin validate --strictGenerated by Claude Code