-
Notifications
You must be signed in to change notification settings - Fork 0
chore: stage shipment 005-S #14
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
8 commits
Select commit
Hold shift + click to select a range
654e5f4
chore(harness): stage shipment 005-S — backlogit infrastructure hygiene
softwaresalt 88d3ece
fix(harness): address PR 14 Copilot review
softwaresalt 810fdd0
fix(harness): address PR 14 Copilot review
softwaresalt 83c49a9
fix(harness): resolve PR 14 doc review
softwaresalt b25c17f
fix(harness): clarify backlogit config target
softwaresalt eab258c
docs(docs): align plan hardening shape
softwaresalt 73b1126
fix(harness): address PR 14 review notes
softwaresalt 8cb9e1d
chore(harness): fix stage 005-S backlog artifacts
softwaresalt File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,45 @@ | ||
| --- | ||
| id: "003-C" | ||
| title: "Backlogit infrastructure hygiene" | ||
| artifact_type: chore | ||
| status: queued | ||
| priority: medium | ||
| description: "Fix backlog ID namespace collision at config level and gitignore backlogit DB files. Two config-only tasks that improve tooling reliability and repository cleanliness." | ||
| labels: | ||
| - "backlogit" | ||
| - "config" | ||
| - "hygiene" | ||
| references: | ||
| - "docs/plans/2026-05-24-backlogit-infra-hygiene-plan.md" | ||
| - "docs/decisions/2026-05-23-backlog-id-collision.md" | ||
| - "docs/decisions/2026-05-24-backlogit-infra-hygiene-deliberation.md" | ||
| created_at: "2026-05-23T20:12:17.0000000-07:00" | ||
| updated_at: "2026-05-23T21:17:23.0072735-07:00" | ||
| --- | ||
|
|
||
| ## Scope | ||
|
|
||
| Two config-level fixes for backlogit infrastructure: | ||
|
|
||
| 1. **ID namespace collision fix**: Give chores a type-discriminated task naming | ||
| format (`{NNN}C{suffix}`) so chore task IDs never collide with feature task IDs. | ||
|
|
||
| 2. **Gitignore DB files**: Add `.backlogit/*.db` to `.gitignore` and untrack | ||
| `.backlogit/backlogit.db`. Keep `.backlogit/stash.jsonl` tracked. | ||
|
|
||
| ## Acceptance Criteria | ||
|
|
||
| - New chores created after the config change get collision-free task IDs | ||
| (e.g., `003C.001-T`); this staged shipment's existing queue items remain | ||
| `003.001-T` / `003.002-T` unless a later migration is approved | ||
| - `.backlogit/backlogit.db` does not appear in `git status` | ||
| - `.backlogit/stash.jsonl` remains tracked | ||
| - `backlogit doctor` passes after config change | ||
| - CI passes (no Rust code changes) | ||
|
|
||
| ## Source Documents | ||
|
|
||
| - Decision: `docs/decisions/2026-05-23-backlog-id-collision.md` | ||
| - Deliberation: `docs/decisions/2026-05-24-backlogit-infra-hygiene-deliberation.md` | ||
| - Plan: `docs/plans/2026-05-24-backlogit-infra-hygiene-plan.md` | ||
| - Compound: `docs/compound/backlogit-id-collision-archival-protocol.md` |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,36 @@ | ||
| --- | ||
| id: "003.001-T" | ||
| title: "Gitignore backlogit DB files and untrack cached database" | ||
| artifact_type: task | ||
| status: queued | ||
| priority: medium | ||
| parent_id: "003-C" | ||
| description: "Add .backlogit/*.db to .gitignore, run git rm --cached .backlogit/backlogit.db, verify stash.jsonl remains tracked." | ||
| labels: | ||
| - "backlogit" | ||
| - "gitignore" | ||
| - "config" | ||
| references: | ||
| - "docs/plans/2026-05-24-backlogit-infra-hygiene-plan.md" | ||
| created_at: "2026-05-23T20:12:17.0000000-07:00" | ||
| updated_at: "2026-05-23T21:17:23.0072735-07:00" | ||
| --- | ||
|
|
||
| ## Implementation Notes | ||
|
|
||
| 1. Add a `# backlogit (tool-managed cache)` section to `.gitignore` | ||
| 2. Add rule: `.backlogit/*.db` | ||
| 3. Run `git rm --cached .backlogit/backlogit.db` | ||
| 4. Verify: `git ls-files .backlogit/stash.jsonl` still shows the file | ||
| 5. Verify: `git status` no longer shows `.backlogit/backlogit.db` | ||
|
|
||
| ## Acceptance Criteria | ||
|
|
||
| - `.backlogit/*.db` rule exists in `.gitignore` | ||
| - `.backlogit/backlogit.db` is untracked (does not appear in `git status`) | ||
| - `.backlogit/stash.jsonl` remains tracked (`git ls-files` confirms) | ||
| - `backlogit sync` succeeds after change (DB regenerates from markdown) | ||
|
|
||
| ## Execution Posture | ||
|
|
||
| Config change — no test harness needed. Validate via git commands. |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,47 @@ | ||
| --- | ||
| id: "003.002-T" | ||
| title: "Fix chore task ID namespace with type-discriminated format" | ||
| artifact_type: task | ||
| status: queued | ||
| priority: medium | ||
| parent_id: "003-C" | ||
| description: "Modify .backlogit/config.yaml chore name_format to use type-discriminated prefix so chore task IDs do not collide with feature task IDs, after confirming config.yaml is the authoritative artifact-type config." | ||
| labels: | ||
| - "backlogit" | ||
| - "config" | ||
| - "id-collision" | ||
| references: | ||
| - "docs/plans/2026-05-24-backlogit-infra-hygiene-plan.md" | ||
| - "docs/decisions/2026-05-23-backlog-id-collision.md" | ||
| created_at: "2026-05-23T20:12:17.0000000-07:00" | ||
| updated_at: "2026-05-23T21:17:23.0072735-07:00" | ||
| --- | ||
|
|
||
| ## Implementation Notes | ||
|
|
||
| 1. Confirm the target file before editing: inspect `.backlogit/config.yaml` or use | ||
| `backlogit_get_metadata_catalog` to verify it defines | ||
| `artifact_types.chore.name_format`; `.backlogit/config.yml` is generated | ||
| autoharness metadata and does not control artifact ID formatting | ||
| 2. Edit `.backlogit/config.yaml` — change chore `name_format` from `'{NNN}{suffix}'` | ||
| to `'{NNN}C{suffix}'` | ||
| 3. Run `backlogit doctor` to validate no parse errors | ||
| 4. Create a test chore item to verify new ID format (e.g., `003C-C` or similar) | ||
| 5. Verify existing archived items remain accessible | ||
| 6. If backlogit rejects the format: fall back to a `prefix: C` approach or | ||
| consult backlogit documentation for supported format tokens | ||
|
|
||
| ## Acceptance Criteria | ||
|
|
||
| - `.backlogit/config.yaml` is confirmed as the authoritative file for | ||
| `artifact_types.chore.name_format` | ||
| - `.backlogit/config.yaml` chore section uses type-discriminated naming | ||
| - `backlogit doctor` reports no errors | ||
| - New chore items get IDs that cannot collide with feature IDs | ||
| - Existing queue and archive items remain queryable | ||
| - The compound learning `backlogit-id-collision-archival-protocol.md` must be | ||
| marked as superseded once the fix is validated | ||
|
|
||
| ## Execution Posture | ||
|
|
||
| Migration-first — apply config change, then validate with doctor and a test create. | ||
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,58 @@ | ||
| --- | ||
| id: "005-S" | ||
| title: "Backlogit infrastructure hygiene" | ||
| artifact_type: shipment | ||
| status: queued | ||
| priority: medium | ||
| description: "Ship backlogit config hygiene: gitignore DB files + fix chore task ID namespace collision." | ||
| labels: | ||
| - "backlogit" | ||
| - "config" | ||
| - "hygiene" | ||
| references: | ||
| - "docs/plans/2026-05-24-backlogit-infra-hygiene-plan.md" | ||
| created_at: "2026-05-23T20:12:17.0000000-07:00" | ||
| custom_fields: | ||
| items: | ||
| - 003-C | ||
| - 003.001-T | ||
| - 003.002-T | ||
| updated_at: "2026-05-23T21:17:23.0072735-07:00" | ||
| --- | ||
|
softwaresalt marked this conversation as resolved.
|
||
|
|
||
| ## Manifest | ||
|
|
||
| | Order | Item ID | Title | Type | | ||
| |---|---|---|---| | ||
| | 1 | 003-C | Backlogit infrastructure hygiene | chore | | ||
| | 2 | 003.001-T | Gitignore backlogit DB files and untrack cached database | task | | ||
| | 3 | 003.002-T | Fix chore task ID namespace with type-discriminated format | task | | ||
|
|
||
| ## Execution Notes | ||
|
|
||
| - **Suggested order**: 003.001-T first (gitignore — lower risk, cleans working tree), | ||
| then 003.002-T (config change — requires validation) | ||
| - **Branch name**: `chore/backlogit-infra-hygiene` | ||
| - **No Rust code changes** — CI gates (fmt, clippy, test, build) should pass trivially | ||
| - **Working tree prep**: The dirty `.backlogit/backlogit.db` will be resolved by | ||
| task 003.001-T itself (git rm --cached); stage the stash.jsonl change as part of | ||
| the branch setup commit | ||
|
|
||
| ## Pre-Ship Gate Considerations | ||
|
|
||
| 1. **Dirty working tree**: `.backlogit/backlogit.db` (modified) and | ||
| `.backlogit/stash.jsonl` (modified) are currently dirty. Ship should: | ||
| - Commit stash.jsonl changes (legitimate tracked state) on the feature branch | ||
| - Task 003.001-T will handle untracking the DB file | ||
| 2. **Prior 004-S local-only memory artifact** should stay out of this shipment | ||
| PR; it belongs to the prior 004-S closure and should not block or | ||
| contaminate this chore | ||
| 3. **backlogit doctor validation**: Must run after 003.002-T to confirm the config | ||
| change is accepted | ||
|
|
||
| ## Source Documents | ||
|
|
||
| - Deliberation: `docs/decisions/2026-05-24-backlogit-infra-hygiene-deliberation.md` | ||
| - Plan: `docs/plans/2026-05-24-backlogit-infra-hygiene-plan.md` | ||
| - Prior decision: `docs/decisions/2026-05-23-backlog-id-collision.md` | ||
| - Stash entry: `E1B44C77` | ||
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
114 changes: 114 additions & 0 deletions
114
docs/decisions/2026-05-24-backlogit-infra-hygiene-deliberation.md
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,114 @@ | ||
| --- | ||
| title: "Backlogit Infrastructure Hygiene" | ||
| type: deliberation | ||
| description: "Deliberation on grouping backlog ID namespace fix with gitignore hygiene for backlogit DB files" | ||
| topic: "Backlogit config-level fixes: ID namespace collision + gitignore DB files" | ||
| depth: "lightweight" | ||
| stash_ids: | ||
| - "E1B44C77" | ||
| promote_to: "plan" | ||
| created: 2026-05-24 | ||
| linked_artifacts: | ||
| - "docs/decisions/2026-05-23-backlog-id-collision.md" | ||
| - "docs/compound/backlogit-id-collision-archival-protocol.md" | ||
| tags: | ||
| - "backlogit" | ||
| - "config" | ||
| - "gitignore" | ||
| - "chore" | ||
| --- | ||
|
softwaresalt marked this conversation as resolved.
|
||
|
|
||
| ## Problem Frame | ||
|
|
||
| Two backlogit infrastructure issues require config-level fixes: | ||
|
|
||
| 1. **ID namespace collision** (`E1B44C77`): Features and chores share a single | ||
| `{NNN}` sequence counter. When both hit the same counter value, their child | ||
| tasks produce identical IDs (`001.001-T` under both `001-F` and `001-C`). | ||
| The workaround (delete-not-move on archival) is documented but fragile. The | ||
| root fix is type-discriminated task naming for chores. | ||
|
|
||
| 2. **Gitignore gap** (operator instruction): `.backlogit/backlogit.db` is a | ||
| tool-managed SQLite cache that should not be tracked in git. It appears as | ||
| dirty working tree noise and risks merge conflicts. The stash file | ||
| (`.backlogit/stash.jsonl`) is intentionally tracked state and must remain so. | ||
|
|
||
| **Who cares**: Ship agent (archival correctness), all agents (clean `git status`), | ||
| operator (repository hygiene). | ||
|
|
||
| **Success criteria**: Chore tasks get collision-free IDs; backlogit DB files are | ||
| gitignored; stash.jsonl remains tracked. | ||
|
|
||
| ## Research Findings | ||
|
|
||
| * The existing decision document (`2026-05-23-backlog-id-collision.md`) confirms | ||
| the root cause and recommends type-discriminated prefixes for chore tasks. | ||
| * The compound learning (`backlogit-id-collision-archival-protocol.md`) documents | ||
| the interim workaround and explicitly references `E1B44C77` as the long-term fix. | ||
| * Current `config.yaml` uses `name_format: '{NNN}{suffix}'` for all types — | ||
| chores get `{NNN}-C` and their tasks inherit the same `{NNN}` as features. | ||
| * Current `.gitignore` has no rules for `.backlogit/` database files. | ||
| * `.backlogit/backlogit.db` is currently tracked (shows as modified in | ||
| `git status`). | ||
|
|
||
| ## Options Evaluated | ||
|
|
||
| ### Option A: Combined chore — config fix + gitignore in one release unit | ||
|
|
||
| Both changes target the same infrastructure surface (`.backlogit/` and | ||
| `.gitignore`), require no Rust source changes, and form a coherent "backlogit | ||
| hygiene" chore. Ship them together. | ||
|
|
||
| * **Pros**: Single PR, coherent scope, fast turnaround, unblocks Ship immediately | ||
| * **Cons**: None significant — both are small config changes | ||
| * **Effort**: Low (2 tasks × ~1 hour each) | ||
| * **Fit**: Excellent — both are medium-priority config hygiene | ||
|
|
||
| ### Option B: Separate chores — one for ID fix, one for gitignore | ||
|
|
||
| Stage each as its own chore with its own shipment. | ||
|
|
||
| * **Pros**: Maximum isolation | ||
| * **Cons**: Unnecessary overhead for two tiny changes that share the same surface; | ||
| doubles PR review cost; both are prerequisite hygiene for future work | ||
| * **Effort**: Same total effort but double coordination cost | ||
| * **Fit**: Poor — artificially splitting coherent work | ||
|
|
||
| ## Trade-off Comparison | ||
|
|
||
| | Criterion | Option A (Combined) | Option B (Separate) | | ||
| |---|---|---| | ||
| | Coherence | High — same domain | Low — artificial split | | ||
| | PR overhead | 1 PR | 2 PRs | | ||
| | Risk | Low | Low | | ||
| | Ship turnaround | Fast | Slower | | ||
| | Unblock value | Immediate | Delayed | | ||
|
|
||
| ## Decision | ||
|
|
||
| **Option A: Combined chore.** Ship both fixes as a single "Backlogit | ||
| Infrastructure Hygiene" chore with two tasks. The scope is tight, the blast | ||
| radius is config-only, and both changes serve the same operational goal: | ||
| make backlogit tooling work cleanly without workarounds. | ||
|
|
||
| ## Rejected Alternatives | ||
|
|
||
| Option B rejected: no benefit to splitting two small, tightly related config | ||
| changes into separate release units. | ||
|
|
||
| ## Unresolved Questions | ||
|
|
||
| * The config.yaml change for type-discriminated task naming depends on whether | ||
| the current backlogit version supports format tokens like `{parent_NNN}C` or | ||
| whether a simpler approach (separate counter per type) is needed. The impl-plan | ||
| must investigate this. | ||
| * Whether `.backlogit/backlogit.db` needs `git rm --cached` to stop tracking it | ||
| (likely yes, since it currently shows as modified). | ||
|
|
||
| ## Risks and Mitigations | ||
|
|
||
| | Risk | Mitigation | | ||
| |---|---| | ||
| | Config change breaks existing task ID parsing | Validate with `backlogit doctor` after change | | ||
| | Gitignore change loses stash.jsonl tracking | Explicitly verify stash.jsonl is NOT matched by the new rule | | ||
| | Existing archived items with old IDs become orphaned | No impact — archived items retain their IDs; only new chore tasks get new format | | ||
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,47 @@ | ||
| --- | ||
| type: session-memory | ||
| agent: stage | ||
| date: 2026-05-24 | ||
| session: stage-005-s-assembly | ||
| status: complete | ||
| --- | ||
|
|
||
| ## Session Summary | ||
|
|
||
| Staged shipment `005-S` from stash entry `E1B44C77` + operator gitignore instruction. | ||
|
|
||
| ## Artifacts Created | ||
|
|
||
| | Type | Path | | ||
| |---|---| | ||
| | Deliberation | `docs/decisions/2026-05-24-backlogit-infra-hygiene-deliberation.md` | | ||
| | Plan | `docs/plans/2026-05-24-backlogit-infra-hygiene-plan.md` | | ||
| | Chore | `.backlogit/queue/003-C.md` | | ||
| | Task 1 | `.backlogit/queue/003.001-T.md` | | ||
| | Task 2 | `.backlogit/queue/003.002-T.md` | | ||
| | Shipment | `.backlogit/queue/005-S.md` | | ||
|
|
||
| ## Stash Entries Consumed | ||
|
|
||
| - `E1B44C77` → harvested to `003-C` | ||
|
|
||
| ## Deferred Entries (26 remaining) | ||
|
|
||
| All other stash entries remain active. Medium-priority candidates for next session: | ||
| - `DDF819E0` (manifest command), `7B611B73` (MCP tools), `C7AA4D4B` (join command) | ||
| - `B821FFFD`, `3AF98027`, `C60FFBA9` (medium tasks — potential grouped batch) | ||
|
|
||
| ## Decisions | ||
|
|
||
| - Combined gitignore + ID collision into single chore (tight domain coherence) | ||
| - Plan review: PASS with no blocking findings | ||
| - Execution order: gitignore first (003.001-T), then config fix (003.002-T) | ||
|
|
||
| ## Ship Pre-Conditions | ||
|
|
||
| 1. Dirty working tree needs cleanup before Ship claims 005-S | ||
| 2. Any local-only 004-S closure memory artifact should stay out of this | ||
| shipment PR; it belongs to the prior 004-S closure and should not block or | ||
| contaminate this chore | ||
| 3. `.backlogit/stash.jsonl` changes should be committed (legitimate tracked state) | ||
|
softwaresalt marked this conversation as resolved.
|
||
| 4. backlogit doctor validation required after 003.002-T | ||
Oops, something went wrong.
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.