Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion core/templates/onboarding.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ AI-DLC is open-world. Plugins under `plugins/<name>/` contribute additional stag
{{SLOT:structure_extra}}
## Conventions

- All artifacts go under the active intent's record dir — `aidlc/spaces/<active-space>/intents/<slug>-<id8>/` (shorthand `<record>/`) — beneath the neutral `aidlc/` workspace roof; application code goes to the workspace root (or a sibling repo). Single-team users only ever see `spaces/default/`.
- All artifacts go under the active intent's record dir — `aidlc/spaces/<active-space>/intents/<YYMMDD>-<label>/` (shorthand `<record>/`) — beneath the neutral `aidlc/` workspace roof; application code goes to the workspace root (or a sibling repo). Single-team users only ever see `spaces/default/`.
- Each stage keeps an observation diary at `<record>/<phase>/<stage>/memory.md`, created by the engine from a template when it emits the run-stage directive and kept up to date automatically as the stage runs, never hand-edited
- Use emojis as defined in skill/stage files — reproduce them exactly
- Validate Mermaid diagram syntax before writing; include text fallback
Expand Down
2 changes: 2 additions & 0 deletions harness/codex/manifest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,8 @@ const manifest: HarnessManifest = {
"sha256:cc3212fc7335018158882cbaa141ac6fd02cee53bbceb00bd185f416fa06ff8f",
"sha256:412776ee4595c453511a911e06c7729285bb5338b30584f8570908b273e27296",
"sha256:dd650e54fb2e645b6f30002f91f8f6f174fe34550295582f5b6a95356edaed77",
// The 2.9.0 shipped variant (#1131 changed the onboarding record-dir shape).
"sha256:87563548299dd2a0c1fcd3cde480b612bd1ec767a2550dbc05a6a041a3d7f522",
],
},
},
Expand Down
2 changes: 2 additions & 0 deletions harness/copilot/manifest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,8 @@ const manifest: HarnessManifest = {
// Keep pre-engine-directory unmarked root files recognizable.
"sha256:9550b31b8f3f32992c1ae1035bfa57a782f04821530214a2f2e1fd1690e209ab",
"sha256:1b8b3b4b10de3307a927429a676f5dd7440099a6d18859f603328b5ed239e6c7",
// The 2.9.0 shipped variant (#1131 changed the onboarding record-dir shape).
"sha256:bf3077a6520e2735f618bad386858afc57edceaa791d98de7a6c269d71861e56",
],
},
},
Expand Down
2 changes: 2 additions & 0 deletions harness/cursor/manifest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,8 @@ const manifest: HarnessManifest = {
// Keep pre-engine-directory unmarked root files recognizable.
"sha256:78c906200a55665f3a3ce410272c71d4bdcb5764174407da0f69d8ad6d143184",
"sha256:2907b5293bfd8bd9d5f8b7a8025bfe23edd0ffcd31f925761916088517880936",
// The 2.9.0 shipped variant (#1131 changed the onboarding record-dir shape).
"sha256:2ef8a8cd1b72e59d017013b8d261721b1c5dedb82499b44dc9a97be01b6a73cb",
],
},
},
Expand Down
2 changes: 2 additions & 0 deletions harness/kiro-ide/manifest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,8 @@ const manifest: HarnessManifest = {
"sha256:025c596b2f44b688a329d419b5cd39fd2ee2a6d6cae4e6491dc6cd0f663c04ea",
"sha256:68be79dc053e88931557484ef37b7f63248cddcf02cb44db89c5bd2522980967",
"sha256:6735312a6ece44f0ba65b949ede2a241669fa422db584dadb2a9ed57e4e43be7",
// The 2.9.0 shipped variant (#1131 changed the onboarding record-dir shape).
"sha256:94f27a88ddba31149876da0609e0eb9a36ce153f52f27898579c846daec2ff59",
],
},
},
Expand Down
2 changes: 2 additions & 0 deletions harness/kiro/manifest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,8 @@ const manifest: HarnessManifest = {
"sha256:3aea80a2afde8bb2a222b329bcfc2855b4207a53f7fbfbc3abbfb4aadbafc53b",
"sha256:1abeb3cb19943bc1537c413dc45298c43a14ce7544444c88c13b53ea48a607a6",
"sha256:ecb68f08789258e77c81488e98dd1632b607b567a2424311c4dcdc30ce3e768f",
// The 2.9.0 shipped variant (#1131 changed the onboarding record-dir shape).
"sha256:9ad7daa07cbafe9f149311b679281eecd991d2ec77787fc7751226ea0622522b",
],
},
},
Expand Down
2 changes: 2 additions & 0 deletions harness/opencode/manifest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@ const manifest: HarnessManifest = {
// Keep pre-engine-directory unmarked root files recognizable.
"sha256:d791057d6b667517197a450bc6ba633c36e148d62e09c90a8992d787c914a44f",
"sha256:d86a61b7376772dcc7afdaefd63ce185f99d9c32d0e455668cf3b52f91a13d40",
// The 2.9.0 shipped variant (#1131 changed the onboarding record-dir shape).
"sha256:db6e65ed85d6b47ca47d72b5a323ddc4dca76d021cce92591c1a28b26d9f237a",
],
},
},
Expand Down
2 changes: 1 addition & 1 deletion tests/fixtures/docs-legacy-refs.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"_comment": "Docs legacy-ref allowlist gate (t174). The gate scans docs/**/*.md + core/templates/*.md + each harness/<h>/skills/aidlc/SKILL.md (derived FROM DISK) and FAILS unless every surviving retired-token line is pinned here by exact file + line text, with the pinned count <= ceiling. FOUR retired-token lanes: (1) `aidlc-docs` \u2014 the flat record layout relocated to aidlc/spaces/<space>/intents/<slug>-<id8>/; (2) bare `--init` \u2014 the retired aidlc command; (3) dotted rules dirs `.claude/rules/` | `.kiro/steering/` | `.codex/aidlc-rules/` \u2014 the method/rules layer relocated to aidlc/spaces/<space>/memory/ (graph.ts MEMORY_SEGMENTS), so these survive ONLY in native-include prose (the `.claude/rules/aidlc.md` @-import stub, Kiro IDE's `.kiro/steering/aidlc-active-memory.md`, the packager rename narrative); (4) `*-learnings.md` filename \u2014 learnings collapsed into practices in memory/{team,project}.md (aidlc-learnings.ts), so there are ZERO legitimate survivors. EXCLUDES dist/** (generated; package.ts --check proves parity) and core/aidlc-common/** (the engine-parsed stage tree's aidlc-docs reroot is a separate deferred sweep). Adding an entry requires a visible diff here; blanket-allowlisting trips the ceiling. See docs/reference/07-sensor-system.md, docs/reference/14-claude-features.md, docs/harness-engineering/06-sensors.md.",
"_comment": "Docs legacy-ref allowlist gate (t174). The gate scans docs/**/*.md + core/templates/*.md + each harness/<h>/skills/aidlc/SKILL.md (derived FROM DISK) and FAILS unless every surviving retired-token line is pinned here by exact file + line text, with the pinned count <= ceiling. FIVE retired-token lanes: (1) `aidlc-docs` \u2014 the flat record layout relocated to aidlc/spaces/<space>/intents/<YYMMDD>-<label>/; (2) bare `--init` \u2014 the retired aidlc command; (3) dotted rules dirs `.claude/rules/` | `.kiro/steering/` | `.codex/aidlc-rules/` \u2014 the method/rules layer relocated to aidlc/spaces/<space>/memory/ (graph.ts MEMORY_SEGMENTS), so these survive ONLY in native-include prose (the `.claude/rules/aidlc.md` @-import stub, Kiro IDE's `.kiro/steering/aidlc-active-memory.md`, the packager rename narrative); (4) `*-learnings.md` filename \u2014 learnings collapsed into practices in memory/{team,project}.md (aidlc-learnings.ts), so there are ZERO legitimate survivors; (5) `<slug>-<id8>` \u2014 the pre-date-prefix record-dir shape, replaced by `<YYMMDD>-<label>` (aidlc-utility.ts intent-create), so there are ZERO legitimate survivors. EXCLUDES dist/** (generated; package.ts --check proves parity) and core/aidlc-common/** (the engine-parsed stage tree's aidlc-docs reroot is a separate deferred sweep). Adding an entry requires a visible diff here; blanket-allowlisting trips the ceiling. See docs/reference/07-sensor-system.md, docs/reference/14-claude-features.md, docs/harness-engineering/06-sensors.md.",
"ceiling": 15,
"allowed": [
{
Expand Down
12 changes: 10 additions & 2 deletions tests/unit/t174-docs-legacy-refs-gate.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,15 @@ function scanOccurrences(): Occurrence[] {
// `*-learnings.md` surface. Filename-anchored so the live tool
// `aidlc-learnings.ts` and the phrase "learnings ritual" never match.
const hasLearningsLog = /(?:aidlc-)?(?:project|team)-learnings\.md/.test(line);
if (hasAidlcDocs || hasInit || hasRulesDir || hasLearningsLog) {
// Retired record-dir shape; intent-create mints `<YYMMDD>-<label>`.
const hasLegacyRecordDir = line.includes("<slug>-<id8>");
if (
hasAidlcDocs ||
hasInit ||
hasRulesDir ||
hasLearningsLog ||
hasLegacyRecordDir
) {
out.push({ file: rel, line: i + 1, text: line.trim() });
}
}
Expand All @@ -137,7 +145,7 @@ describe("t174 docs legacy-ref allowlist gate (P9 — closed predicate)", () =>
allowedByFile.get(e.file)?.add(e.text.trim());
}

test("every surviving aidlc-docs/--init/rules-dir/learnings-log docs occurrence is pinned in the allowlist", () => {
test("every surviving aidlc-docs/--init/rules-dir/learnings-log/legacy-record-dir docs occurrence is pinned in the allowlist", () => {
const unpinned = occurrences.filter(
(o) => !(allowedByFile.get(o.file)?.has(o.text) ?? false),
);
Expand Down
3 changes: 3 additions & 0 deletions tests/unit/t243-install-mechanism.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3954,6 +3954,7 @@ describe("t243 projection channel", () => {
"sha256:412776ee4595c453511a911e06c7729285bb5338b30584f8570908b273e27296",
"sha256:dd650e54fb2e645b6f30002f91f8f6f174fe34550295582f5b6a95356edaed77",
"sha256:87563548299dd2a0c1fcd3cde480b612bd1ec767a2550dbc05a6a041a3d7f522",
"sha256:c7843449d549d4226be39169a9c31bf89694cd0b0754cb1ee68bdf61759538ce",
],
},
kiro: {
Expand All @@ -3971,6 +3972,7 @@ describe("t243 projection channel", () => {
"sha256:1abeb3cb19943bc1537c413dc45298c43a14ce7544444c88c13b53ea48a607a6",
"sha256:ecb68f08789258e77c81488e98dd1632b607b567a2424311c4dcdc30ce3e768f",
"sha256:9ad7daa07cbafe9f149311b679281eecd991d2ec77787fc7751226ea0622522b",
"sha256:c8777a03505f11dcbb4fb339fef1a8072d9d2500ce401b69a06073b523ea2c67",
],
},
"kiro-ide": {
Expand All @@ -3988,6 +3990,7 @@ describe("t243 projection channel", () => {
"sha256:68be79dc053e88931557484ef37b7f63248cddcf02cb44db89c5bd2522980967",
"sha256:6735312a6ece44f0ba65b949ede2a241669fa422db584dadb2a9ed57e4e43be7",
"sha256:94f27a88ddba31149876da0609e0eb9a36ce153f52f27898579c846daec2ff59",
"sha256:5f6f076a5a9d8a11e1078f568c9dee091f399d9999fae89e9dffa62d8697b797",
],
},
};
Expand Down
Loading