Switch archive policy to year-month buckets (LLMP-DEC-67)
Updated all docs, skills, and examples to use year-month archive files (`*_<YYYY>_<MM>.md`) for `_ISSUES.md`, `_TODO.md`, and `LLM_PROTOCOL_DECISIONS.md`. Decision Log rolling window now governed by LLMP-DEC-67 (last 15 entries active). Clarified archive file handling, updated uniqueness checks, and revised references throughout. Closed and documented resolution for `FBANKAPP-DMODEL-I-P6X4` in `DATAMODEL_ISSUES.md`.
This commit is contained in:
parent
1210393e67
commit
954e5ef86a
File diff suppressed because one or more lines are too long
|
|
@ -1,6 +1,6 @@
|
||||||
# LLM Protocol Decisions — Archive: 2026-04
|
# LLM Protocol Decisions — Archive: 2026-04
|
||||||
|
|
||||||
Archived entries from `LLM_PROTOCOL_DECISIONS.md` per the **last-15-active retention policy** (LLMP-DEC-65). All entries here have IDs in the LLMP-DEC namespace; year-month bucket = **2026-04** (entries dated 2026-04-XX).
|
Archived entries from `LLM_PROTOCOL_DECISIONS.md` per the **last-15-active retention policy** (LLMP-DEC-67). All entries here have IDs in the LLMP-DEC namespace; year-month bucket = **2026-04** (entries dated 2026-04-XX).
|
||||||
|
|
||||||
> **Archive files are NOT auto-loaded** by `docs-discovery` or any session-start pre-load. Read on-demand when historical context is needed (e.g., a recent entry references LLMP-DEC-X — open this file to read the full text). IDs are preserved (never reassigned). Format identical to the active log.
|
> **Archive files are NOT auto-loaded** by `docs-discovery` or any session-start pre-load. Read on-demand when historical context is needed (e.g., a recent entry references LLMP-DEC-X — open this file to read the full text). IDs are preserved (never reassigned). Format identical to the active log.
|
||||||
>
|
>
|
||||||
|
|
|
||||||
|
|
@ -75,11 +75,11 @@ The `<RAND>` suffix is **4 characters from `[A-Z0-9]`** (36⁴ ≈ 1.7 million c
|
||||||
**Generation rules**:
|
**Generation rules**:
|
||||||
|
|
||||||
1. Each new entry receives a fresh random suffix at creation time.
|
1. Each new entry receives a fresh random suffix at creation time.
|
||||||
2. Before finalizing: the agent globs existing entries (active topic file + all year-bucketed archive files for that topic) and verifies the suffix is not yet used.
|
2. Before finalizing: the agent globs existing entries (active topic file + all year-month bucket archive files for that topic) and verifies the suffix is not yet used.
|
||||||
3. If collision detected (extremely rare — birthday-paradox 50% probability at ~1300 entries per topic-type-prefix triple): regenerate the suffix.
|
3. If collision detected (extremely rare — birthday-paradox 50% probability at ~1300 entries per topic-type-prefix triple): regenerate the suffix.
|
||||||
4. The suffix is **append-only** once assigned — never renumbered, never recycled, never reassigned to a different entry.
|
4. The suffix is **append-only** once assigned — never renumbered, never recycled, never reassigned to a different entry.
|
||||||
|
|
||||||
**At archive time** (`docs-archive` skill): performs collision-check before moving entries to year-bucketed archive files. If collision detected with an existing archive entry: skill aborts, signals the user, awaits manual resolution — no silent corruption.
|
**At archive time** (`docs-archive` skill): performs collision-check before moving entries to year-month bucket archive files. If collision detected with an existing archive entry: skill aborts, signals the user, awaits manual resolution — no silent corruption.
|
||||||
|
|
||||||
## LLMP exception
|
## LLMP exception
|
||||||
|
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -58,7 +58,7 @@ The framework (this file) does NOT enumerate higher-layer topics — that would
|
||||||
## ID format rules
|
## ID format rules
|
||||||
|
|
||||||
1. **Format**: `<PREFIX>-<TOPIC>-<TYPE>-<RAND>` — all uppercase, hyphen-separated. The `<PREFIX>` component identifies the owning repo per `AyCode.Core/.github/REPO_PREFIXES.md` (and per each repo's own `@repo.prefix` field). **LLMP exception**: `LLMP-DEC-N` entries (workspace-meta Decision Log) skip the prefix and use sequential `N` instead of `<RAND>` — single-file serialization avoids parallel-branch collision.
|
1. **Format**: `<PREFIX>-<TOPIC>-<TYPE>-<RAND>` — all uppercase, hyphen-separated. The `<PREFIX>` component identifies the owning repo per `AyCode.Core/.github/REPO_PREFIXES.md` (and per each repo's own `@repo.prefix` field). **LLMP exception**: `LLMP-DEC-N` entries (workspace-meta Decision Log) skip the prefix and use sequential `N` instead of `<RAND>` — single-file serialization avoids parallel-branch collision.
|
||||||
2. **Random suffix**: `<RAND>` is a 4-character alphanumeric suffix from `[A-Z0-9]` (~1.7M combinations per `<PREFIX>-<TOPIC>-<TYPE>` triple). Generated at entry creation; the agent globs existing entries (active topic file + all year-bucketed archive files) and verifies uniqueness; regenerate on rare collision.
|
2. **Random suffix**: `<RAND>` is a 4-character alphanumeric suffix from `[A-Z0-9]` (~1.7M combinations per `<PREFIX>-<TOPIC>-<TYPE>` triple). Generated at entry creation; the agent globs existing entries (active topic file + all year-month bucket archive files) and verifies uniqueness; regenerate on rare collision.
|
||||||
3. **Append-only**: once assigned, IDs never change. If an entry is reversed or superseded, add a NEW entry that references the prior one — do not renumber, do not re-randomize.
|
3. **Append-only**: once assigned, IDs never change. If an entry is reversed or superseded, add a NEW entry that references the prior one — do not renumber, do not re-randomize.
|
||||||
4. **Hash anchor** (markdown cross-file refs): lowercase with hyphens preserved (`LOGGING_ISSUES.md#accore-log-i-k7m2` — GitHub auto-converts). Always use the full prefixed form; bare hash anchors without prefix are ambiguous across repos.
|
4. **Hash anchor** (markdown cross-file refs): lowercase with hyphens preserved (`LOGGING_ISSUES.md#accore-log-i-k7m2` — GitHub auto-converts). Always use the full prefixed form; bare hash anchors without prefix are ambiguous across repos.
|
||||||
5. **No sub-category in ID**: legacy sub-prefixes like `PROTO-`, `DISPATCH-`, `CONN-`, `DS-` are NOT allowed at ID level. Capture sub-category in the entry body header: `## ACCORE-SIG-I-K7M2 [PROTO]: ...`.
|
5. **No sub-category in ID**: legacy sub-prefixes like `PROTO-`, `DISPATCH-`, `CONN-`, `DS-` are NOT allowed at ID level. Capture sub-category in the entry body header: `## ACCORE-SIG-I-K7M2 [PROTO]: ...`.
|
||||||
|
|
@ -138,7 +138,7 @@ The body carries the **nuance**; the Status field only signals archive-eligibili
|
||||||
|
|
||||||
### Lifecycle: archive
|
### Lifecycle: archive
|
||||||
|
|
||||||
`Closed` entries are eligible for rotation into year-bucketed archive files (`<file>_<year>.md`) via the `docs-archive` skill. Year derived from a date in the entry body. Archive operation is user-invoked — closed entries don't disappear automatically. See `AyCode.Core/.github/skills/docs-archive/SKILL.md`.
|
`Closed` entries are eligible for rotation into year-month bucket archive files (`<file>_<YYYY>_<MM>.md`) via the `docs-archive` skill. Year-month derived from a date in the entry body. Archive operation is user-invoked — closed entries don't disappear automatically. See `AyCode.Core/.github/skills/docs-archive/SKILL.md`.
|
||||||
|
|
||||||
## Change history
|
## Change history
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -118,24 +118,24 @@ If any `{DOMAIN}.md` is loaded (e.g., `LOGGING.md`), ALSO glob and load its comp
|
||||||
|
|
||||||
These are **paired docs** and must be loaded as a set. Skipping ISSUES/TODO risks reintroducing fixed bugs or conflicting with ongoing refactors.
|
These are **paired docs** and must be loaded as a set. Skipping ISSUES/TODO risks reintroducing fixed bugs or conflicting with ongoing refactors.
|
||||||
|
|
||||||
## Archive files (`*_<year>.md`)
|
## Archive files (`*_<YYYY>_<MM>.md`)
|
||||||
|
|
||||||
Closed entries from `_ISSUES.md` / `_TODO.md` / `LLM_PROTOCOL_DECISIONS.md` may be rotated into year-bucketed archive files by the `docs-archive` skill. Examples:
|
Closed entries from `_ISSUES.md` / `_TODO.md` / `LLM_PROTOCOL_DECISIONS.md` may be rotated into year-month bucket archive files by the `docs-archive` skill. Examples:
|
||||||
- `LOGGING_ISSUES_2025.md`
|
- `LOGGING_ISSUES_2025_03.md`
|
||||||
- `BINARY_TODO_2026.md`
|
- `BINARY_TODO_2026_01.md`
|
||||||
- `LLM_PROTOCOL_DECISIONS_2026.md`
|
- `LLM_PROTOCOL_DECISIONS_2026_04.md`
|
||||||
|
|
||||||
### Default behaviour: NOT auto-loaded
|
### Default behaviour: NOT auto-loaded
|
||||||
|
|
||||||
The Step 2 glob patterns target **active** companions only — unsuffixed names. Year-suffixed variants are excluded by default. Practically:
|
The Step 2 glob patterns target **active** companions only — unsuffixed names. Year-suffixed variants are excluded by default. Practically:
|
||||||
|
|
||||||
- `**/docs/{TOPIC}/{TOPIC}_ISSUES.md` matches; `**/docs/{TOPIC}/{TOPIC}_ISSUES_2025.md` does NOT.
|
- `**/docs/{TOPIC}/{TOPIC}_ISSUES.md` matches; `**/docs/{TOPIC}/{TOPIC}_ISSUES_2025_03.md` does NOT.
|
||||||
- If a generic `{TOPIC}_*.md` pattern inadvertently matches year-suffixed files, filter them out before passing to Step 4 (Load).
|
- If a generic `{TOPIC}_*.md` pattern inadvertently matches year-suffixed files, filter them out before passing to Step 4 (Load).
|
||||||
|
|
||||||
### On-demand read (no user-confirm needed — read-only operation)
|
### On-demand read (no user-confirm needed — read-only operation)
|
||||||
|
|
||||||
Read an archive file when ANY of these signals appears:
|
Read an archive file when ANY of these signals appears:
|
||||||
- A loaded entry references an archived ID (e.g., `Superseded by ACCORE-LOG-I-K7M2` where the random-suffixed ID resolves only to a `_<year>.md` archive)
|
- A loaded entry references an archived ID (e.g., `Superseded by ACCORE-LOG-I-K7M2` where the random-suffixed ID resolves only to a `_<YYYY>_<MM>.md` archive)
|
||||||
- A code comment or other doc references an ID resolving only to an archive file
|
- A code comment or other doc references an ID resolving only to an archive file
|
||||||
- The user's request describes a behaviour pattern matching an archived `Fixed` entry's Description (regression suspicion)
|
- The user's request describes a behaviour pattern matching an archived `Fixed` entry's Description (regression suspicion)
|
||||||
- The investigation feels like "this was solved before" — read the topic's archive(s) before re-deriving
|
- The investigation feels like "this was solved before" — read the topic's archive(s) before re-deriving
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue