This file defines the working rules for anyone contributing to DedSec through automated or assisted coding sessions.
- Never use agent names, tool names, or signatures in branch names, commit messages, pull requests, or generated documentation.
- Work in small, traceable blocks.
- Prefer conservative changes that match the current project stage.
- Do not revert user changes unless explicitly requested.
- Keep documentation updated when a decision affects architecture, security, workflow, or product scope.
- Use frequent project snapshots so the project remains understandable after context compaction or handoff.
- Do not begin application implementation during foundation-only blocks.
- DedSec is currently PC/Desktop-focused. Do not introduce non-PC repair or optimization workflows unless the project owner explicitly reopens that product direction in a future block.
DedSec adopts the useful parts of the lean-context preset from
mvuljevas/AGENTS as a workflow layer.
- Retrieve context before reading context.
- Do not read the whole repository unless the user explicitly asks for a full audit.
- Start with
README.md,AGENTS.md,docs/AI_CONTEXT.md, and recent entries indocs/SNAPSHOTS.md. - Use
docs/AI_SEARCH.mdto locate relevant files before opening broad source trees. - Use
rgbefore opening files. - Prefer small file slices over complete files.
- Respect
.aiignoreand.rgignoreunless the user explicitly asks to inspect ignored material. - Avoid generated output, dependency folders, build artifacts, caches, secrets, and lockfiles unless they are directly relevant.
- Update
docs/AI_CONTEXT.mdwhen architecture, commands, stack, product scope, or important project boundaries change.
DedSec uses a full Gitflow path managed through Pull Requests:
mainis the production-ready branch.developis the integration branch for completed features.stagingis the release-candidate branch beforemain.- Work branches start from
develop. - Merge transitions must be done via Pull Requests on GitHub:
feature/*,chore/*,docs/*,fix/*,refactor/*,test/*-> PR ->develop(Integration)develop-> PR ->staging(Release Candidate)staging-> PR ->main(Production Release)
- Do not assign
@mvuljevasor request@mvuljevasas reviewer by default. GitHub may warn about self-assignment and blocks self-review requests. Keep ownership visible through branch names, labels, PR scope, and merge history. - Do not tag routine work-branch merges to
develop. - For release candidates merged to
stagingvia PR, tag the commit as an annotated GPG-signed tagv<major>.<minor>.<patch>-rc.<num>, for examplev1.0.0-rc.1. - For production releases merged to
mainvia PR, tag the commit with the annotated GPG-signed tagv<major>.<minor>.<patch>, for examplev1.0.0. - Push relevant branches and tags after each completed block using
git push origin <branch> --tags. - Keep
main,staging, anddeveloppresent at all times. - Delete obsolete work branches after their pull requests are merged.
Branch names must describe the product change, for example:
chore/001-project-foundationchore/002-monorepo-scaffolddocs/003-workflow-rulesfeature/004-web-download-pagefix/005-desktop-launch-error
When opening pull requests on GitHub, follow these guidelines:
- Assignees: do not set assignees by default.
- Reviewers: do not request reviewers by default. Request a reviewer only when a different GitHub user or team is explicitly responsible for review.
- PR labels: every PR must have at least one label representing the scope of
the change. Standard labels are configured in
.github/labels.ymland can be synced using.github/create_labels.ps1. - PR descriptions must include scope, verification, risks, and documentation updates.
- Foundation, architecture, security, and workflow changes must update
docs/SNAPSHOTS.md.
Pull requests should be merged automatically when all of the following are true:
- The PR is not a draft.
- The PR targets the correct Gitflow branch.
- Required local verification for the block has passed.
- The PR has at least one scope label.
- The PR has no known unresolved conflicts or explicit user hold.
Automation rules:
- Work branch PRs targeting
developmay be merged with a normal merge commit. - After a PR is merged into
develop, fetch the remote, create a lightweight checkpoint tag on the merge commit, and push the tag. - Release-candidate PRs from
developtostagingmay be merged once release verification passes, then tagged asv<major>.<minor>.<patch>-rc.<num>. - Production PRs from
stagingtomainmay be merged once release approval is clear, then tagged with a GPG-signed stable tag. - After a PR is merged and tagged, delete the obsolete work branch locally and remotely.
- Never delete
main,staging, ordevelop.
DedSec uses SemVer versions before 1.0.0, but tags are reserved for approved
release milestones.
Use the version segment that matches the real change:
MAJOR: incompatible public behavior, data, API, packaging, or workflow contract changes.MINOR: new product capability, new app surface, or meaningful compatible user-facing functionality.PATCH: bug fixes, workflow corrections, documentation fixes, dependency safety updates, CI/tooling maintenance, and other compatible maintenance changes.
Version examples:
- Initial foundation or first usable scaffold:
0.1.0. - Workflow correction after
0.1.0:0.1.1. - Dependency security fix after
0.2.0:0.2.1. - New desktop diagnostic capability after
0.2.1:0.3.0.
Tagging rules:
- Do not create tags for foundation/scaffolding, routine documentation blocks,
or regular
developmerges unless the project owner explicitly approves a release milestone. - Never create lightweight tags. All tags must be annotated and GPG-signed.
- Do not use a
MINORbump for a fix or workflow correction. - Do not use a
PATCHbump for a new product capability. - If a tag was created with the wrong SemVer level and has not been used for a
release artifact, replace it with the correct tag and document the
correction in
docs/SNAPSHOTS.md. - Once a tag is tied to public release artifacts, do not rewrite it; create a new corrective tag instead.
Standard labels use namespaced groups adapted from the AGENTS template library:
type:*: kind of work, such as feature, bug, docs, chore, security, techdebt, dependency, refactor, test, design, or performance.status:*: triage, ready, in-progress, blocked, needs-review, or hold.priority:*: high, medium, or low.area:*: workflow, docs, web, desktop, domain, i18n, security, release, github, or pc-ops.
Labels are configured in .github/labels.yml and synchronized with
.github/create_labels.ps1.
Commit messages must be clear and product-focused:
docs: add project foundation planchore: scaffold monorepo workspacefeat: add desktop shellfix: handle missing download artifact
Do not include generated-by signatures, agent/tool names, or unrelated metadata. All commits and tags must be cryptographically signed using GPG. If signing is not available, stop and report the blocker instead of creating unsigned history.
Each block should include:
- Scope confirmation or a clear assumption.
- Focused implementation or documentation change.
- Local verification when applicable.
- Update to
docs/SNAPSHOTS.md. - Update to
TECHDEBT.mdwhen debt is created, changed, or retired. - Commit with a GPG signature, merge through Gitflow, and push when the block is ready for repository publication.
- Delete the obsolete work branch after the merge is complete.
- Update the authoritative version source when the iteration changes project state.
- Suggested next logical step.
At the end of every iteration, suggest the next logical step using this order:
docs/ROADMAP.md.TECHDEBT.md.- Ask the project owner how to proceed.
Do not invent product direction when roadmap and technical debt do not provide a clear next action.
Record snapshots frequently in docs/SNAPSHOTS.md, especially after:
- Architecture decisions.
- New feature foundations.
- Security/privacy decisions.
- Release or branch merges.
- Context compaction risk.
Each snapshot should state:
- Date.
- Branch or block.
- Current state.
- Decisions made.
- Risks or open questions.
- Next suggested step.
DedSec prioritizes:
- Clear, trustworthy presentation of the PC repair and optimization product.
- Secure desktop behavior with explicit OS permissions.
- Cross-platform desktop compatibility for Windows, macOS, and Linux.
- Privacy-first handling of diagnostic, process, network, installer, and local system information.
- Download flows that are verifiable and easy to maintain.
- Shared product language and UI consistency between web and desktop.