Repository navigation
docs(architecture): propose non-destructive Project removal - #298
Conversation
|
Important Review skippedAuto incremental reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the
|
Replace the archive design with a logical hide design: one optional hidden_at field on the existing Project record, with the Project id, Repository, Tasks, Conversation, configuration, and Workspace membership kept in place. Document the hide and restore preconditions, the enforcement boundaries, lock order, downgrade limits, and credential handling, and label each claim as verified current behavior or proposal. This is a documentation-only change. No code, configuration, or test is changed.
- Qualify the PrCreated not-blocking rule: a PrCreated Task that still holds a worktree_path blocks hide, regardless of status. - Document that hide does not release or reclaim checkouts, and that a separate explicit release mechanism may be required before some Projects can be hidden. - Mark phase-1 decisions O1, O6 and O7 as settled; keep O2 and O4 open. - Present the startup notice as a later, non-required addition. - Resolve the api_key serialization question from source.
|
@coderabbitai full review |
Action performed
|
Restore accepts a Project whose board is still in the legacy location, as the loader does. Placeholders in example messages are code-formatted so they are not rendered as HTML. Startup does not confirm a reverted hide, because the confirmation flag is process-local; the limitation is recorded as an open decision. Downgrade is marked unsupported while a hidden Project is unrestorable. T20 covers only NotPublished, T21 covers PublishedNotDurable, and T22 uses current-format fixtures. Section cross-references are corrected.
State O1, O6 and O7 as settled in one place and mark the proposal as proposed direction. Add workspace detach to the Project writer inventory and to T26. Correct the lifecycle line references, the checkout row, and the lock-order and projects_referencing statements. Record O8 and O9 with the preferred directions.
Summary
This pull request revises the architecture proposal in
docs/architecture/project-removal.md. The proposal now describes logical hide and restore for a Project: one optionalhidden_atfield on the existing Project record, with the Project id, Repository record, Tasks, Conversation, configuration, and Workspace membership all kept in place.This is a documentation-only change. No production code, configuration, or test is changed. The document is a proposal. Nothing in it is implemented or adopted.
Authorization and approval status
690916997d7201036fb7586bd323556bdaaded1d. It does not approve the later revisions, and it must not be read as approval of them.daf1f2f0eb6fea261693a0fe6ecc4d44f50196e7. It has two documentation commits on top of690916997d7201036fb7586bd323556bdaaded1d: the logical-hide revision, and a correction to the checkout and decision rules.What changed from the previous revision
update_projectresetsagent_configand clears a configuredapi_keytoday. The earlier text said the opposite. This is recorded as an existing finding, separate from the proposed feature.projectswrite lock, which every Project writer already takes. Without it, a concurrent write could revert a hide on disk.PrCreatedis no longer named as an unresolved-work marker. It is a historical outcome. The durable markers are listed in section 2.5.PrCreatedTask that still holds a checkout blocks hide, regardless of status. Hide does not release, detach, or reclaim a checkout. Some Projects may therefore need a separate, explicit checkout-release mechanism before they can be hidden. That mechanism is a lifecycle requirement for implementation, not part of this proposal (section 3.4).Review thread dispositions
These are design positions, not GitHub thread resolutions. No thread has been resolved in this update. The threads may show as outdated after this commit.
repository_idstays optional, and restore needs no path (sections 3.1, 3.5).Autolocation can drift, so restore checks the resolved board and refuses on conflict (sections 2.2, 3.5). A stored resolved location is deferred.Decisions
Section 12.2 lists the phase-1 decisions:
api_keyexposure is handled in this phase: open. The default is to record it as a separate item.Validation
mainbranch after PR feat(tasks): select review mode during Task creation #299 was merged. Line references are given in the document.api_keyserialization question is resolved from source:AgentConfighas no skip attribute (src-tauri/src/domain/project.rs:138-144).docs/architecture/project-removal.md.scripts/check-agent-docs.shpasses ondaf1f2f0.