The methodology

Six processes. Fifteen disciplines. One ticket at a time.

48 steps, each a skill your agent runs. Generated from the workflow data that the skills are built from, so this page and the framework cannot disagree.

The processes The steps

The six AA-SDLC processes as a cycle: Conception and idea refinement, Development, Testing, Deployment, Verification, Maintenance and continuous improvement Conception6 steps Development6 steps Testing6 steps Deployment5 steps Verification4 steps Maintenance9 steps AA-SDLC 48 steps, 15 disciplines

Vocabulary

How to read this page

Discipline

A kind of work, not a person or a headcount. One developer runs every discipline on a personal project; a team divides them however it likes.

Step

One unit of work, delivered as a skill and invoked as a command inside your agent. Each names what it reads, what it produces, when that counts as done, and the guidance it follows.

Process

An ordered set of steps toward a goal. The order is a description, never an enforcement: every step can run at any time.

The earlier version of this page described six phases and twenty-three steps with named actors and tools. Actors are gone because the discipline is the actor and the framework never assumes who performs it (T-13); tools are gone because the framework describes the process and lets the agent infer the tool from the project (T-01). That earlier document is kept in the website repository as the historical record of the pre-SDK methodology.

The cycle

The six processes

Maintenance and continuous improvement

Keeping the system healthy, secure, documented, and improving after release.

  1. TriageSupport
  2. Respond to an incidentSupport
  3. Post-incident reviewSupport
  4. Fix a defectDevelopment
  5. Optimise performanceDevelopment
  6. Analyse feedback and update the roadmapProduct Management
  7. Maintain security and complianceSecurity
  8. Maintain documentationDocumentation
  9. Run a retrospectiveProject Management

Exit: Incidents are resolved and reviewed, defects fixed with reproducing tests, feedback turned into roadmap decisions, and security and documentation evidence current.

The reference

The steps, by discipline

Framework fw

The framework's own work: bootstrapping a project, checking that the environment and repository meet the declared requirements, and growing the framework through extensions. It is not a software delivery discipline; it is what makes the other fourteen runnable.

Owns:

  • Aggregating and probing every declared requirement and reporting the result (T-10, T-11)
  • Bringing a repository up to the framework's requirements with the user's consent
  • Scaffolding, validating, installing, and sharing extensions (T-02)
  • Routing the agent to the right discipline and step for the task at hand
  • Authoring the framework itself: adding opinions, tenets, disciplines, processes, and steps with all of their plumbing (in the aa-sdlc repository only)

Report health /aa-fw-health

Aggregate every requirement declared by the installed skills, plugins, and processes, probe each one, and report what is met, unmet, or not applicable, and what depends on each. Report the install itself. Never block, never change anything.

No ticket anchor. Skill: src/aa-sdlc/skills/framework/health/SKILL.md

Reads
  • The installed skills and plugins and the requirements they declare
  • The merged aa.config.yaml, if a project is in scope
  • The agent's own tools: which systems it can actually reach
Produces

Health report in returned to the user; written to the documents folder only if asked. Done when:

  • Every declared requirement appears with a status and, if unmet, what depends on it and the remedy
  • The install (scope, version, target, skills, commands, update available) is reported
  • Coverage is reported per discipline and technology, never headcount (T-13)
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

For this step:

  • G-04 Before marking a step done, run the project's build and tests and quote their actual output. "It should work" is not evidence.
  • Probe by doing, not by looking. To check the ticket system, read a ticket; to check source control, read the remote; to check the build, run the build script. A configuration file that exists proves nothing.
  • Probe the ticket project's configuration, not only its names. Read its workflow states, the moves between them, the parent links it allows, and its board; a mapping whose names all exist can still leave two life-cycle states on one workflow state or a step with no move to make (R-43).
  • Report not-applicable as its own status. A requirement that cannot apply here (hooks on a target with no hooks) is not a failure and must not look like one.
  • Change nothing. If a probe would need to create, write, or install anything to succeed, report it as unmet and name /aa-fw-init as the remedy.
  • Group the report by kind (environment, project, tooling, coverage) and lead with required-and-unmet.

Tenets T-10, T-11, T-13

Bootstrap a project /aa-fw-init

Run health, then work through the unmet requirements that need judgement, fixing each with the user's consent, listing what cannot be fixed with its remedy, and running health again.

No ticket anchor. Skill: src/aa-sdlc/skills/framework/init/SKILL.md

Reads
  • The health report
  • The merged aa.config.yaml written by aa init
  • The project's detected stack
  • Any feature files the repository already has
Produces

Bootstrapped project in the repository root and the project config. Done when:

  • The ticket project was checked against R-41 and R-43 as soon as it was confirmed, before any other fix
  • Where the ticket project is shared, conventions.ticket.filter selects this project's tickets, and no shared workflow or board was changed without its owner's consent (T-14)
  • The project's own root page is recorded as conventions.knowledge.root, or the documents folder's knowledge folder is recorded as the knowledge base (R-03)
  • Feature files that existed before the pages were offered for seeding as pages and pulled back with provenance headers, or R-46 is listed as unmet
  • The stack is recorded in the project config, inferred from the repository or answered by the user in a survey
  • Every category the framework and the stack prescribe has a tool recorded under tools, chosen by the user, or is recorded as having none
  • Every recorded tool is installed on this machine at its minimum version, or its install was declined and is listed
  • Every fixable unmet requirement was proposed and, if agreed, fixed
  • Every unfixable unmet requirement is listed with its remedy
  • A second health report shows what changed and what remains
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

For this step:

  • G-13 Stop and ask before any irreversible action (deploy, delete, external message, merge to a protected branch) unless the user granted it in advance.
  • G-50 Start each language's static analyser rule set from a published best-practice baseline for the language, framework version, and kind of application, or from a widely used alternative the user picks, or from the user's stated preferences; tailor it in the rule set file rather than with suppressions in code, and record the baseline, its version, and every departure with its reason in a decision record.
  • Propose, then act. State each fix as a one-line proposal with what it creates or changes, and perform it only after the user agrees. Batch trivial fixes (folders, stubs) into one proposal.
  • Never choose a tool for the project. When a language has no formatter or a technology has no skill, name the gap and list what is available in the project's scope or as plugins; the user chooses (T-01).
  • Map before you create. If the repository already has an equivalent of a conventional folder, propose the mapping in the project config rather than a second folder.
  • Leave stubs honest. A stub root script must say, in its first lines, exactly what it must do when filled in and must exit non-zero until it is.
  • The ticket project and knowledge base are a conversation, not a lookup. Ask the user; when they name a system and paste a URL, search the agent's own scope for a skill, MCP server, or CLI for that system (T-05), confirm the project through it, and record the mapping. If the connector is absent or unauthorised, say exactly that, record the mapping anyway, and let health report R-02 or R-03. Never name a system the user did not name (T-01). Record this project's ticket filter where the ticket project is shared and its own root page in the knowledge base (T-14); with no knowledge base in scope, offer the documents folder's knowledge folder in the same page format.
  • Survey only what the repository cannot answer. Infer the stack from what is there; when the repository is blank or leaves it open, ask what is being built, in which languages and frameworks at which versions, for which platforms, deployed where, and built by which pipeline, and record the answers so no one is asked twice.
  • Record every tool with the command that checks it and the command that installs it on each platform, and put the install in the root initialize script, so the next machine gets the same tools without this conversation.
  • Check the ticket project the moment it is confirmed, before anything else. Read its workflow, the moves between states, the parent links, and the board, and hold them to R-41 and R-43; propose each missing piece with the step that would stumble on it, make it with consent where the user may administer the project and the workflow is this project's alone, and otherwise list it for the administrator or the shared workflow's owner (T-14). A project that cannot carry the life cycle is found hours later, in the middle of other work, when it is not checked first.

Tenets T-06, T-11

Find what is next /aa-fw-whatsnext

Review the working folder, and the ticket system and knowledge base it links to, against the framework's requirements, opinions, and processes in a fixed order of layers, stop at the first major gap, and name the one thing to do next, usually a command with its arguments. Change nothing.

No ticket anchor. Skill: src/aa-sdlc/skills/framework/whatsnext/SKILL.md

Reads
  • The working folder, whether or not it is a repository yet
  • The merged aa.config.yaml, if a project is in scope
  • The health report: the requirements that are required and unmet
  • The working tree, the current branch, open merge requests, and the recent commits on the default branch
  • The decision records, feature files, and tests the recent commits touched
  • The knowledge base pages under the project's root linked to recent tickets and feature files
  • The current iteration and the ordered backlog in the ticket system, through the project's ticket filter
Produces

Next-step recommendation in returned to the user; nothing is written. Done when:

  • Names exactly one gap, the first major one in the layer order, with the evidence that shows it
  • Names the one thing to do about it, as a command with its arguments where a command fits
  • Lists the layers checked before it and that each passed, so the user knows what was not found wrong
  • Says when a layer could not be checked because a system was out of reach, and moves on to the next layer
  • Ends with the remaining planned work: the open tickets in the current iteration counted by state, or says it could not be read
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

For this step:

  • G-04 Before marking a step done, run the project's build and tests and quote their actual output. "It should work" is not evidence.
  • Check the layers in order and stop at the first major gap: foundation (a repository, the project config, the linked ticket project able to carry the life cycle, the knowledge base, and feature files all pulled from their pages), work in flight (uncommitted changes, an unfinished branch, a merge request awaiting review), recent changes held to the opinions (each commit traces to a ticket, code changes carry tests, significant decisions have records, behaviour changes have scenarios on their feature pages, no feature file changed by hand), the knowledge base in step with recent changes, then the next ticket. A later layer cannot be trusted while an earlier one has a gap.
  • A gap is major when it breaks a required requirement, an opinion on the default branch, or work already started. Anything smaller is not reported; the command answers one question, what to do next, not what could be better.
  • Take the foundation layer from /aa-fw-health's required-and-unmet findings rather than probing requirements again; health owns requirement checks, and this step owns choosing among them.
  • Recommend the step that closes the gap, named as its command with its arguments, such as /aa-qa-generate-tests with the ticket id. Where no command fits, say plainly what to do.
  • Choose the next ticket from the current iteration in priority order, and let its life-cycle state (O-26) choose the command. New is /aa-rf-refine-ticket; Refined is /aa-ip-plan-implementation; Planned is /aa-dev-implement; In review with its change merged is /aa-ba-uat; Accepted is /aa-rel-prepare-release. No iteration is /aa-pm-plan-iteration; an empty backlog is /aa-pd-prioritise.
  • Change nothing. Read the folder, the tickets, and the pages; do not create, edit, commit, transition, or install anything, even to make a check possible.
  • Read only what is this project's (T-14). Take its tickets through the ticket filter in the project config and its pages from under its knowledge root; in a shared ticket system or knowledge base, nothing outside them is this project's gap.
  • When a system is out of reach, say which layer could not be checked and why, and continue with the layers that can be; never report a layer as passed that was not checked.

Tenets T-03, T-04, T-10 | Opinions O-01, O-02, O-03, O-04, O-07, O-17, O-18, O-19

Create an extension /aa-fw-extend

Walk the user from a need the framework does not cover to a valid, installable extension: choose the kind, scaffold it, declare its requirements, write its feature files, validate it against the tenets, and install or share it.

A ticket is optional. Skill: src/aa-sdlc/skills/framework/extend/SKILL.md

Reads
  • What the user needs the framework to know about
  • The installed extensions, to add to rather than duplicate
  • The organisation config repository, if sharing
Produces

Extension in plugins/<name>/ for packs; the project's skills location for a project skill; targets/<name>/ for an adapter. Done when:

  • Has a manifest, declared requirements in its own id range, and feature files
  • Passes validation: changes nothing in core, and core-level guidance names no tool
  • Installed at the chosen scope, or added to the organisation config repository
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

For this step:

  • Fit the kind to the need before scaffolding. A stack-specific practice is a tech-stack pack; a tool the life cycle uses is a tool pack; an organisational gate is a process pack; something only this repository needs is a project skill; a new agent is a target adapter. Explain the choice in one sentence.
  • A plugin skill attaches to the life cycle. It names the core step or process it serves, or the core requirement it satisfies; a skill that attaches to nothing, such as code generation, script generation, organisation-wide practice, or media generation, is an ordinary agent skill and stays outside the framework.
  • Write the feature file first. The extension's behaviour is captured as scenarios before any skill text is written, so the skill has something to be checked against.
  • Refuse politely and specifically. When an extension would change core, name the exact core item and offer the nearest allowed alternative.
  • Prefer adding to an existing pack over creating a second pack for the same technology or process.

Tenets T-01, T-02, T-11, T-12

Product Management pd

Decides what to build and why, and in what order. Owns the outcome the software is meant to achieve, the measure of whether it did, and the roadmap that sequences the work. Product Management answers "should we", Business Analysis answers "what exactly".

Owns:

  • The product outcome and success metrics for each initiative, recorded as the anchor epic
  • Prioritisation of the backlog by value, risk, and dependency
  • Feedback analysis from users, support, and production data, and the roadmap it produces
  • The decision to start, pause, or stop an initiative

Define the outcome /aa-pd-define-outcome

Write down what an initiative is meant to achieve and how we will know. Produces the anchor epic with a measurable outcome, so every later step can answer "does this serve the outcome".

A ticket is optional. Skill: src/aa-sdlc/skills/product-management/define-outcome/SKILL.md

Reads
  • The idea, request, or problem statement
  • Existing roadmap and outcomes, to avoid duplicates and find conflicts
Produces

Anchor epic in the ticket system. Done when:

  • States the outcome as a change in a measure, not a list of features
  • Names the success metric, its current value, and the target
  • Names who benefits and what they can do afterwards that they cannot do now
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

For this step:

  • G-16 State assumptions and unverified claims explicitly, and put unresolved questions on the anchor ticket.
  • G-35 Start every requirement from written goals: the outcome, then the scenarios. When a screenshot or mock-up arrives first, treat it as evidence of what someone wants: write the goals and scenarios it implies, record what it does not show as questions on the ticket, get them confirmed, and only then produce a mock-up from them.
  • G-41 Write every significant decision, technical, product, or process, as a decision record the moment it is made: one screen, numbered next in the repository's sequence, dated, with context, options considered, decision, and consequences, linked from the anchor ticket. Never edit an accepted record; supersede it with a new one that links back.
  • G-52 Create every ticket as one of the five kinds, in the ticket system's name for it from the project config: an epic for an outcome, a story for one behaviour a user can observe with its scenarios, a task for a buildable piece of a story's plan, a bug for behaviour that contradicts a scenario, a spike for a time-boxed question; link each to its parent (task to story, story to epic).
  • Outcome, not output. If the statement can be satisfied by shipping something nobody uses, rewrite it until it cannot.
  • Put a number on it. A metric with no baseline is a wish; measure or estimate the current value and say which.
  • Say what is out of scope in the same place, so refinement does not have to guess.

Tenets T-04, T-07 | Opinions O-15, O-18

Prioritise the backlog /aa-pd-prioritise

Order epics and stories by value against the outcome, risk, and dependency, and record why. The ordered backlog lives in the ticket system; the reasoning lives on the tickets.

A ticket is optional. Skill: src/aa-sdlc/skills/product-management/prioritise/SKILL.md

Reads
  • The backlog as it stands in the ticket system
  • Outcomes and metrics from define-outcome
  • Dependencies and risks surfaced by Refinement, Technical Analysis, and Security
Produces

Ordered backlog in the ticket system. Done when:

  • Every item has a rank and a one-line reason on the ticket
  • Items blocked by a dependency are ranked after what blocks them
  • The top of the backlog is ready or in refinement, not raw ideas
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

For this step:

  • G-28 Before recording a size, write on the ticket how the work will be built (what changes, what is unknown, what could go wrong) at a depth that matches the stakes, and cite that reasoning from the size. If a number is needed before that thinking exists, give a range labelled as a guess, do not record it as the size, and never commit an iteration on it.
  • G-41 Write every significant decision, technical, product, or process, as a decision record the moment it is made: one screen, numbered next in the repository's sequence, dated, with context, options considered, decision, and consequences, linked from the anchor ticket. Never edit an accepted record; supersede it with a new one that links back.
  • Rank by outcome contribution first, then risk reduction, then cost. When two items tie, prefer the one that retires an unknown.
  • Never reorder silently. Every change of rank is a comment on the ticket saying what moved and why, and a demotion of committed work is a decision record (O-18).
  • Ask before demoting. If an item someone is working on drops out of the iteration, that is a conversation, not a rank change.

Tenets T-04, T-06 | Opinions O-18

Analyse feedback and update the roadmap /aa-pd-iterate

Turn what users, support, and production are saying into decisions: what to enhance, what to fix, what to stop. Produces a feedback analysis and a roadmap update, with new tickets where the answer is "build".

A ticket is optional. Skill: src/aa-sdlc/skills/product-management/iterate/SKILL.md

Reads
  • User feedback, support tickets, incident post-mortems, and production metrics
  • Current roadmap and outcomes
Produces

Product feedback analysis in the knowledge base, linked from the roadmap epic. Done when:

  • Feedback is grouped by theme with counts and sources, not by who said it loudest
  • Each theme has a decision: enhance, fix, stop, or wait, with a reason

Roadmap update in the ticket system and the knowledge base. Done when:

  • Every "enhance" or "fix" decision has a ticket; every "stop" has a closed ticket with the reason
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

For this step:

  • G-41 Write every significant decision, technical, product, or process, as a decision record the moment it is made: one screen, numbered next in the repository's sequence, dated, with context, options considered, decision, and consequences, linked from the anchor ticket. Never edit an accepted record; supersede it with a new one that links back.
  • Count before you conclude. Compute theme frequencies and metric movements with a tool; do not eyeball a list and call it a trend.
  • Separate signal from volume. One report from a critical workflow can outrank twenty from a cosmetic one; say so explicitly when you rank that way.
  • Close the loop. Where feedback came from a ticket, comment on it with the decision.

Tenets T-04, T-07 | Opinions O-18

Business Analysis ba

Turns a business need into requirements the whole team can read and a test can execute. Discovers what stakeholders actually need, closes the gaps, writes it as Gherkin scenarios, and later confirms with those stakeholders that what was built is what they meant.

Owns:

  • Discovery with stakeholders and the initial requirements it produces
  • Gap analysis, the question log, and getting questions answered
  • Requirements as scenarios in feature files, linked to tickets and pages (T-12, O-01)
  • User acceptance testing against those scenarios

Run discovery /aa-ba-discover

Capture what stakeholders need, as they say it and as they mean it. Produces the initial requirements as draft scenarios and a question log of everything not yet answered.

Anchors on a ticket. Skill: src/aa-sdlc/skills/business-analysis/discover/SKILL.md

Reads
  • The anchor epic and its outcome
  • Stakeholder input: a conversation, a transcript, a document, or a session with the user
  • Existing system documentation and the project's feature pages
  • Any screenshot or mock-up offered as the request, treated as evidence rather than as the requirement (O-15)
Produces

Initial requirements in the knowledge base, as Draft scenarios on feature pages under the project's Requirements section (in the documents folder where no knowledge base is in scope), tagged with the epic. Done when:

  • Every stated need is a scenario or an explicit non-requirement
  • Business objectives and scope boundaries appear in the feature description
  • Every feature and scenario has its id, and the epic links to each page and its scenario ids

Question log in the anchor epic, as open questions. Done when:

  • Every unanswered question has context and an owner
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

From the repository-write set: What every step that changes files in the repository does: keep artifacts with the code, write Conventional Commit messages, one cohesive change per commit, stage and present rather than commit, and name the purpose of every change.

  • G-11 Every artifact that belongs with the code goes into the same change set as the code, staged for the commit the user makes (G-40). Nothing that matters is left only on a local disk or in a conversation.
  • G-33 Write every commit message in Conventional Commits form: a type from the project's list, an optional scope, an imperative subject, a body that says why, and a footer carrying the ticket reference and any breaking change. One concern per commit (G-39); if you cannot name the type, split the commit.
  • G-39 Make each commit one understandable change: one concern per commit, one ticket per branch, a subject that says what and a body that says why, small enough to review in one sitting. If the subject needs "and" or the diff needs a tour, split it.
  • G-40 Never commit unless the user asked for that commit. Stage the change, write the message, present the staged diff summary and the message, and stop; a request to implement, fix, finish, or run a step is not a request to commit, and the commit is made under the user's identity with no agent attribution.
  • G-42 Before making a change, name what it is for: the ticket, the scenario it satisfies, or the decision record or page that explains it, and put that reference where the change lives: the branch, the commit footer, the merge request, and the artifact. A change that cannot name its purpose is a ticket to create first or work not to do; in review, a hunk that traces to nothing is a finding.

For this step:

  • G-16 State assumptions and unverified claims explicitly, and put unresolved questions on the anchor ticket.
  • G-18 Change a requirement on its feature page in the knowledge base, under the ticket that asks for it, then pull the page into the repository. Never edit a feature file by hand; a change found while building is converted to the page format and proposed on the page for its owner to approve.
  • G-19 Tag every Approved scenario on its feature page with the ticket that asked for it, and link the ticket to the page and the scenario ids.
  • G-35 Start every requirement from written goals: the outcome, then the scenarios. When a screenshot or mock-up arrives first, treat it as evidence of what someone wants: write the goals and scenarios it implies, record what it does not show as questions on the ticket, get them confirmed, and only then produce a mock-up from them.
  • G-49 Give every feature a stable id (F-nnn) and every scenario one derived from it (F-nnn-nn), assigned on its feature page once and never renumbered or reused; tag or name every automated test with the ids of the scenarios it proves, so coverage is the set of scenario ids that at least one test names.
  • Write it as Gherkin from the first pass. A requirement captured in prose has to be translated later and loses something each time; a Draft scenario on a feature page can be wrong in a way everyone can see, and the repository gets it only once it is Approved.
  • Ask the confirming question, not the leading one. "So when X happens you need Y?" invites agreement; "What happens when X?" invites the truth.
  • Record what was not said. Silence on error cases, permissions, and edge conditions is a question, not an assumption.
  • A picture is a witness, not a specification. When the request arrives as a screenshot or mock-up, write the goals and scenarios it implies, log what it does not show as questions, and let the mock-up be regenerated from the confirmed scenarios later (O-15).

Tenets T-04, T-06, T-12 | Opinions O-01, O-15

Refine requirements /aa-ba-refine-requirements

Close the gaps. Turn draft scenarios into complete, unambiguous, testable ones; record the technical constraints they must live within; link every scenario to its ticket and page.

Anchors on a ticket. Skill: src/aa-sdlc/skills/business-analysis/refine-requirements/SKILL.md

Reads
  • Draft scenarios on their feature pages and the question log from discover
  • Answers from stakeholders
  • Technical constraints from Technical Analysis and Security, if available
Produces

Feature pages in the knowledge base under the project's Requirements section (in the documents folder where no knowledge base is in scope). Done when:

  • Every scenario has concrete Given, When, Then steps with no "should work correctly"
  • Every scenario the stakeholder confirmed is Approved and tagged with its ticket; the ticket links to the page and the scenario ids
  • Ambiguities are resolved or recorded as open questions on the ticket

Technical constraints document in the knowledge base, linked from the epic. Done when:

  • Lists the constraints (platform, integration, compliance, performance) the scenarios must satisfy, each with its source
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

From the repository-write set: What every step that changes files in the repository does: keep artifacts with the code, write Conventional Commit messages, one cohesive change per commit, stage and present rather than commit, and name the purpose of every change.

  • G-11 Every artifact that belongs with the code goes into the same change set as the code, staged for the commit the user makes (G-40). Nothing that matters is left only on a local disk or in a conversation.
  • G-33 Write every commit message in Conventional Commits form: a type from the project's list, an optional scope, an imperative subject, a body that says why, and a footer carrying the ticket reference and any breaking change. One concern per commit (G-39); if you cannot name the type, split the commit.
  • G-39 Make each commit one understandable change: one concern per commit, one ticket per branch, a subject that says what and a body that says why, small enough to review in one sitting. If the subject needs "and" or the diff needs a tour, split it.
  • G-40 Never commit unless the user asked for that commit. Stage the change, write the message, present the staged diff summary and the message, and stop; a request to implement, fix, finish, or run a step is not a request to commit, and the commit is made under the user's identity with no agent attribution.
  • G-42 Before making a change, name what it is for: the ticket, the scenario it satisfies, or the decision record or page that explains it, and put that reference where the change lives: the branch, the commit footer, the merge request, and the artifact. A change that cannot name its purpose is a ticket to create first or work not to do; in review, a hunk that traces to nothing is a finding.

For this step:

  • G-16 State assumptions and unverified claims explicitly, and put unresolved questions on the anchor ticket.
  • G-18 Change a requirement on its feature page in the knowledge base, under the ticket that asks for it, then pull the page into the repository. Never edit a feature file by hand; a change found while building is converted to the page format and proposed on the page for its owner to approve.
  • G-19 Tag every Approved scenario on its feature page with the ticket that asked for it, and link the ticket to the page and the scenario ids.
  • G-35 Start every requirement from written goals: the outcome, then the scenarios. When a screenshot or mock-up arrives first, treat it as evidence of what someone wants: write the goals and scenarios it implies, record what it does not show as questions on the ticket, get them confirmed, and only then produce a mock-up from them.
  • G-49 Give every feature a stable id (F-nnn) and every scenario one derived from it (F-nnn-nn), assigned on its feature page once and never renumbered or reused; tag or name every automated test with the ids of the scenarios it proves, so coverage is the set of scenario ids that at least one test names.
  • G-53 Put each knowledge base page under the project's own root, in the section its content belongs to (Overview, Requirements, Architecture, Operations, Releases, Guides, or the names the project config maps them to), name a requirement page after its feature and its feature id, and when a page is superseded mark it and link to what replaced it rather than deleting it.
  • One behaviour per scenario. If a scenario needs "and" in its Then to describe two outcomes that could fail independently, split it.
  • Make it executable in principle. Every step must be something a test could observe; if it cannot be observed, it is not a requirement, it is a hope.
  • Trace every change. Change the scenario on its feature page first; the ticket's acceptance criteria follow the page and the repository gets the change by pulling it (T-12). Never edit the ticket first, and never edit a feature file.
  • A scenario is Approved when the stakeholder confirms it, not when it reads well. Until then it stays Draft on the page and never reaches the repository.

Tenets T-07, T-12 | Opinions O-01, O-15

User acceptance testing /aa-ba-uat

Confirm with the people who asked for it that what was built is what they meant. Walks stakeholders through the scenarios against the built software and records acceptance or the gap.

Anchors on a ticket. Skill: src/aa-sdlc/skills/business-analysis/uat/SKILL.md

Reads
  • The feature files for the ticket or release, freshly pulled from their feature pages
  • A deployed environment the stakeholder can use
  • The tests Development and Testing wrote, as evidence
Produces

UAT test cases in the pulled feature files, as the scenarios themselves, plus a walkthrough order on the ticket. Done when:

  • Every scenario for the ticket is covered by the walkthrough

UAT results report in the anchor ticket, linked from the knowledge base page. Done when:

  • Each scenario is marked accepted or not, by whom, with the gap described where not
  • Every gap is a new ticket or a scenario change, never a note that fades
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

For this step:

  • G-18 Change a requirement on its feature page in the knowledge base, under the ticket that asks for it, then pull the page into the repository. Never edit a feature file by hand; a change found while building is converted to the page format and proposed on the page for its owner to approve.
  • G-51 Move a ticket to a life-cycle state only in the step that produces its evidence, and write that evidence on the ticket as it moves: Refined when its scenarios are linked and the revision recorded, Planned when the plan is confirmed and sized, In progress when work starts on its branch, In review when its merge request is open, Accepted when the stakeholder confirms it, Done when it is released; use the ticket system's names for the states as the project config maps them.
  • Test the scenario, not the demo. Walk the stakeholder through the Given, When, Then as written; if they want something else, that is a requirement change, and it goes through the feature page.
  • A gap is not a failure of the build if the scenario was met. Record it as a new requirement so Development is not blamed for a discovery miss.
  • Record acceptance by name. "Accepted by the product owner on this date" is evidence; "UAT passed" is not.

Tenets T-06, T-07, T-12

UX Design ux

Makes requirements tangible before they are built and checks the result against real use afterwards. Produces mockups and prototypes that stakeholders react to, and reviews the built software for how people actually interact with it.

Owns:

  • Mockups and interactive prototypes for requirements with a user interface
  • Interaction and flow design: what the user does, in what order, and what they see
  • Usability review of built features and the tickets it raises

Prototype /aa-ux-prototype

Make the requirement visible before it is built. Produces mockups and, where the interaction matters, an interactive prototype that stakeholders can react to, and feeds what they say back into the scenarios.

Anchors on a ticket. Skill: src/aa-sdlc/skills/ux-design/prototype/SKILL.md

Reads
  • The confirmed (Approved) scenarios for the ticket or epic, pulled from their feature pages; a mock-up is made from them, never before them (O-15)
  • Existing design system or conventions in the project, if any
  • The technical constraints document
Produces

Mockups in the documents folder or the design tool the project uses, linked from the ticket and page. Done when:

  • Every scenario with a user interface has at least one mockup showing its When and Then
  • Every mockup names the scenarios it renders (O-15)
  • Variations are labelled with what question each answers

Interactive prototype in linked from the ticket. Done when:

  • Covers the primary flow end to end; a stakeholder can complete the scenario's When without help
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

From the repository-write set: What every step that changes files in the repository does: keep artifacts with the code, write Conventional Commit messages, one cohesive change per commit, stage and present rather than commit, and name the purpose of every change.

  • G-11 Every artifact that belongs with the code goes into the same change set as the code, staged for the commit the user makes (G-40). Nothing that matters is left only on a local disk or in a conversation.
  • G-33 Write every commit message in Conventional Commits form: a type from the project's list, an optional scope, an imperative subject, a body that says why, and a footer carrying the ticket reference and any breaking change. One concern per commit (G-39); if you cannot name the type, split the commit.
  • G-39 Make each commit one understandable change: one concern per commit, one ticket per branch, a subject that says what and a body that says why, small enough to review in one sitting. If the subject needs "and" or the diff needs a tour, split it.
  • G-40 Never commit unless the user asked for that commit. Stage the change, write the message, present the staged diff summary and the message, and stop; a request to implement, fix, finish, or run a step is not a request to commit, and the commit is made under the user's identity with no agent attribution.
  • G-42 Before making a change, name what it is for: the ticket, the scenario it satisfies, or the decision record or page that explains it, and put that reference where the change lives: the branch, the commit footer, the merge request, and the artifact. A change that cannot name its purpose is a ticket to create first or work not to do; in review, a hunk that traces to nothing is a finding.

For this step:

  • G-13 Stop and ask before any irreversible action (deploy, delete, external message, merge to a protected branch) unless the user granted it in advance.
  • G-18 Change a requirement on its feature page in the knowledge base, under the ticket that asks for it, then pull the page into the repository. Never edit a feature file by hand; a change found while building is converted to the page format and proposed on the page for its owner to approve.
  • G-35 Start every requirement from written goals: the outcome, then the scenarios. When a screenshot or mock-up arrives first, treat it as evidence of what someone wants: write the goals and scenarios it implies, record what it does not show as questions on the ticket, get them confirmed, and only then produce a mock-up from them.
  • G-36 Generate every mock-up from confirmed scenarios and name on it the scenarios it renders. Behaviour a mock-up shows that no scenario states is a question on the ticket, not a requirement; change the scenario first, then the mock-up (T-12).
  • Prototype the flow, not the pixels. The question a prototype answers is "is this the right interaction", and polish hides that question.
  • Scenarios first, always. If asked for a mock-up with no confirmed scenarios behind it, write or request them first; a mock-up that shows behaviour no scenario states is a question on the ticket, not a requirement (O-15).
  • Show the unhappy path. A mockup that only shows success leaves the error states to be invented at implementation time.
  • Feed changes back through the feature page. If the prototype review changes what the user needs, propose the change to the scenario on its page for its owner to approve, then change the prototype (T-12).

Tenets T-06, T-12 | Opinions O-15

Review interaction /aa-ux-review-ux

Use the built software the way a user would and record where the interaction fails the scenario, the prototype, or plain sense. Raises tickets for what it finds.

Anchors on a ticket. Skill: src/aa-sdlc/skills/ux-design/review-ux/SKILL.md

Reads
  • The deployed or locally running feature
  • The scenarios, freshly pulled from their feature pages, and the prototype
Produces

Usability findings in the anchor ticket and the knowledge base page. Done when:

  • Each finding names the scenario or flow, what was expected, what happened, and the severity
  • Each finding with severity above cosmetic is a ticket
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

For this step:

  • G-36 Generate every mock-up from confirmed scenarios and name on it the scenarios it renders. Behaviour a mock-up shows that no scenario states is a question on the ticket, not a requirement; change the scenario first, then the mock-up (T-12).
  • Follow the scenario literally first, then wander. The literal pass finds what was missed; the wander finds what was never imagined.
  • Distinguish defect from design. "It does not do what the scenario says" goes to Development; "the scenario was wrong" goes to Business Analysis as a requirement change.

Tenets T-07 | Opinions O-15

Technical Analysis ta

Decides how the system will be shaped and records why. Produces the architecture, the technology choices, and the decision records that let anyone later understand what was considered and rejected. Investigates unknowns with time-boxed spikes rather than guesses.

Owns:

  • System architecture and its diagrams
  • Technology stack choices and the constraints they impose
  • Decision records for every significant technical decision (G-41)
  • Time-boxed spikes to resolve technical unknowns

Architect /aa-ta-architect

Decide the shape of the system for an epic or initiative: components, boundaries, integrations, data, and the technology stack, each with the reason. Produces the architecture and the decision records that back it.

Anchors on a ticket. Skill: src/aa-sdlc/skills/technical-analysis/architect/SKILL.md

Reads
  • The feature pages the epic links to, pulled as feature files, and the technical constraints document
  • The existing architecture and decision records
  • Organisational standards from the enterprise or team scope
Produces

System architecture in the documents folder, linked from the knowledge base page and the epic. Done when:

  • Shows components, their responsibilities, and every integration boundary
  • Every scenario can be traced to the components that satisfy it
  • Every component, boundary, and extension point names the scenario that requires it or the decision record that justifies it (O-20)

Technology stack document in the knowledge base. Done when:

  • Every technology choice has a decision record
  • Constraints imposed on Development and Operations are explicit
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

From the repository-write set: What every step that changes files in the repository does: keep artifacts with the code, write Conventional Commit messages, one cohesive change per commit, stage and present rather than commit, and name the purpose of every change.

  • G-11 Every artifact that belongs with the code goes into the same change set as the code, staged for the commit the user makes (G-40). Nothing that matters is left only on a local disk or in a conversation.
  • G-33 Write every commit message in Conventional Commits form: a type from the project's list, an optional scope, an imperative subject, a body that says why, and a footer carrying the ticket reference and any breaking change. One concern per commit (G-39); if you cannot name the type, split the commit.
  • G-39 Make each commit one understandable change: one concern per commit, one ticket per branch, a subject that says what and a body that says why, small enough to review in one sitting. If the subject needs "and" or the diff needs a tour, split it.
  • G-40 Never commit unless the user asked for that commit. Stage the change, write the message, present the staged diff summary and the message, and stop; a request to implement, fix, finish, or run a step is not a request to commit, and the commit is made under the user's identity with no agent attribution.
  • G-42 Before making a change, name what it is for: the ticket, the scenario it satisfies, or the decision record or page that explains it, and put that reference where the change lives: the branch, the commit footer, the merge request, and the artifact. A change that cannot name its purpose is a ticket to create first or work not to do; in review, a hunk that traces to nothing is a finding.

For this step:

  • G-16 State assumptions and unverified claims explicitly, and put unresolved questions on the anchor ticket.
  • G-23 State a time box for any open-ended investigation before starting it, stop when it is reached, and report what was found either way.
  • G-41 Write every significant decision, technical, product, or process, as a decision record the moment it is made: one screen, numbered next in the repository's sequence, dated, with context, options considered, decision, and consequences, linked from the anchor ticket. Never edit an accepted record; supersede it with a new one that links back.
  • G-43 Design for the scenarios that exist, not the ones you expect: choose the simplest structure that satisfies them, and add an abstraction, extension point, configuration option, or feature only when a scenario requires it or a decision record justifies it, naming which. In review, code or structure that serves no scenario is a finding, and so is a fourth copy of the same code where one named thing would do.
  • G-53 Put each knowledge base page under the project's own root, in the section its content belongs to (Overview, Requirements, Architecture, Operations, Releases, Guides, or the names the project config maps them to), name a requirement page after its feature and its feature id, and when a page is superseded mark it and link to what replaced it rather than deleting it.
  • Decide the fewest things that let work start. Every decision made before it is needed is a decision made with the least information.
  • Name the alternatives you rejected. An architecture without rejected options is a preference, not a decision (G-41).
  • Constrain, do not prescribe. Say what a component must guarantee, not how its code must look; the how belongs to Implementation Planning and the stack.

Tenets T-01, T-04 | Opinions O-04, O-18, O-20

Record a decision /aa-ta-decide

Record one significant technical decision: the context, the options, the choice, and the consequences, so the next person can understand it without asking. Standalone so that decisions made mid-implementation are captured too.

Anchors on a ticket. Skill: src/aa-sdlc/skills/technical-analysis/decide/SKILL.md

Reads
  • The decision to be made or just made, and the anchor ticket it arose from
  • Existing decision records that touch the same area
Produces

Decision record in the knowledge base, or the documents folder as a numbered record, linked from the ticket. Done when:

  • States context, options considered, the decision, and consequences
  • Is numbered next in the repository sequence, dated, and immutable once accepted; a reversal is a new record that supersedes it and links back (O-18)
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

From the repository-write set: What every step that changes files in the repository does: keep artifacts with the code, write Conventional Commit messages, one cohesive change per commit, stage and present rather than commit, and name the purpose of every change.

  • G-11 Every artifact that belongs with the code goes into the same change set as the code, staged for the commit the user makes (G-40). Nothing that matters is left only on a local disk or in a conversation.
  • G-33 Write every commit message in Conventional Commits form: a type from the project's list, an optional scope, an imperative subject, a body that says why, and a footer carrying the ticket reference and any breaking change. One concern per commit (G-39); if you cannot name the type, split the commit.
  • G-39 Make each commit one understandable change: one concern per commit, one ticket per branch, a subject that says what and a body that says why, small enough to review in one sitting. If the subject needs "and" or the diff needs a tour, split it.
  • G-40 Never commit unless the user asked for that commit. Stage the change, write the message, present the staged diff summary and the message, and stop; a request to implement, fix, finish, or run a step is not a request to commit, and the commit is made under the user's identity with no agent attribution.
  • G-42 Before making a change, name what it is for: the ticket, the scenario it satisfies, or the decision record or page that explains it, and put that reference where the change lives: the branch, the commit footer, the merge request, and the artifact. A change that cannot name its purpose is a ticket to create first or work not to do; in review, a hunk that traces to nothing is a finding.

For this step:

  • G-16 State assumptions and unverified claims explicitly, and put unresolved questions on the anchor ticket.
  • G-41 Write every significant decision, technical, product, or process, as a decision record the moment it is made: one screen, numbered next in the repository's sequence, dated, with context, options considered, decision, and consequences, linked from the anchor ticket. Never edit an accepted record; supersede it with a new one that links back.
  • G-43 Design for the scenarios that exist, not the ones you expect: choose the simplest structure that satisfies them, and add an abstraction, extension point, configuration option, or feature only when a scenario requires it or a decision record justifies it, naming which. In review, code or structure that serves no scenario is a finding, and so is a fourth copy of the same code where one named thing would do.
  • G-53 Put each knowledge base page under the project's own root, in the section its content belongs to (Overview, Requirements, Architecture, Operations, Releases, Guides, or the names the project config maps them to), name a requirement page after its feature and its feature id, and when a page is superseded mark it and link to what replaced it rather than deleting it.
  • Short enough to read, complete enough to trust. One screen. If it needs more, the decision is several decisions.
  • Record the losing options with the same care as the winner; the next person will ask about them first.
  • Write it when it happens. A decision reconstructed a month later is a story, not a record.

Tenets T-04 | Opinions O-04, O-18, O-20

Spike /aa-ta-spike

Resolve a technical unknown with a time-boxed investigation that produces an answer, not a product. Throwaway code is expected; the finding is the artifact.

Anchors on a ticket. Skill: src/aa-sdlc/skills/technical-analysis/spike/SKILL.md

Reads
  • The question the spike must answer, stated on the ticket
  • The time box
Produces

Spike finding in the anchor ticket, with a decision record if the finding decides something. Done when:

  • Answers the stated question, or states why it could not and what would
  • Names what was tried, what was learned, and what to do next
  • Spike code is clearly marked as not for production and is not merged to the main branch
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

From the repository-write set: What every step that changes files in the repository does: keep artifacts with the code, write Conventional Commit messages, one cohesive change per commit, stage and present rather than commit, and name the purpose of every change.

  • G-11 Every artifact that belongs with the code goes into the same change set as the code, staged for the commit the user makes (G-40). Nothing that matters is left only on a local disk or in a conversation.
  • G-33 Write every commit message in Conventional Commits form: a type from the project's list, an optional scope, an imperative subject, a body that says why, and a footer carrying the ticket reference and any breaking change. One concern per commit (G-39); if you cannot name the type, split the commit.
  • G-39 Make each commit one understandable change: one concern per commit, one ticket per branch, a subject that says what and a body that says why, small enough to review in one sitting. If the subject needs "and" or the diff needs a tour, split it.
  • G-40 Never commit unless the user asked for that commit. Stage the change, write the message, present the staged diff summary and the message, and stop; a request to implement, fix, finish, or run a step is not a request to commit, and the commit is made under the user's identity with no agent attribution.
  • G-42 Before making a change, name what it is for: the ticket, the scenario it satisfies, or the decision record or page that explains it, and put that reference where the change lives: the branch, the commit footer, the merge request, and the artifact. A change that cannot name its purpose is a ticket to create first or work not to do; in review, a hunk that traces to nothing is a finding.

For this step:

  • G-04 Before marking a step done, run the project's build and tests and quote their actual output. "It should work" is not evidence.
  • G-23 State a time box for any open-ended investigation before starting it, stop when it is reached, and report what was found either way.
  • G-41 Write every significant decision, technical, product, or process, as a decision record the moment it is made: one screen, numbered next in the repository's sequence, dated, with context, options considered, decision, and consequences, linked from the anchor ticket. Never edit an accepted record; supersede it with a new one that links back.
  • G-52 Create every ticket as one of the five kinds, in the ticket system's name for it from the project config: an epic for an outcome, a story for one behaviour a user can observe with its scenarios, a task for a buildable piece of a story's plan, a bug for behaviour that contradicts a scenario, a spike for a time-boxed question; link each to its parent (task to story, story to epic).
  • Write the question before the code. A spike without a question becomes a prototype without a purpose.
  • Stop at the time box. Report what you have; an unanswered question with evidence is more useful than a late answer.
  • Never let spike code become the implementation by accident. If it is good enough to keep, that is a decision to record and a ticket to implement properly.

Tenets T-07 | Opinions O-18

Security sec

Finds what could go wrong before an attacker does. Threat models the architecture, turns the mitigations into requirements, tests the built system for the weaknesses that matter, and keeps dependencies, secrets, and compliance evidence current over the life of the system.

Owns:

  • Threat models and the security requirements they produce as scenarios
  • Security testing of the built system and the compliance report
  • Dependency and secret hygiene, patching, and compliance audit evidence

Threat model /aa-sec-threat-model

Work through what could go wrong with the architecture from an attacker's view, decide which threats matter, and turn each mitigation into a security requirement as a scenario and a ticket.

Anchors on a ticket. Skill: src/aa-sdlc/skills/security/threat-model/SKILL.md

Reads
  • The system architecture and technology stack document
  • The feature pages the epic links to, pulled as feature files, for data flows and trust boundaries
  • Organisational security standards from the enterprise scope, if any
Produces

Threat model in the knowledge base, linked from the epic. Done when:

  • Every trust boundary and data flow in the architecture is considered
  • Every threat is rated and has a decision: mitigate, accept, or transfer, with a reason

Security requirements in the feature pages in the knowledge base as scenarios, and the backlog as tickets. Done when:

  • Every mitigation is a scenario a test can verify and a ticket someone can build
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

From the repository-write set: What every step that changes files in the repository does: keep artifacts with the code, write Conventional Commit messages, one cohesive change per commit, stage and present rather than commit, and name the purpose of every change.

  • G-11 Every artifact that belongs with the code goes into the same change set as the code, staged for the commit the user makes (G-40). Nothing that matters is left only on a local disk or in a conversation.
  • G-33 Write every commit message in Conventional Commits form: a type from the project's list, an optional scope, an imperative subject, a body that says why, and a footer carrying the ticket reference and any breaking change. One concern per commit (G-39); if you cannot name the type, split the commit.
  • G-39 Make each commit one understandable change: one concern per commit, one ticket per branch, a subject that says what and a body that says why, small enough to review in one sitting. If the subject needs "and" or the diff needs a tour, split it.
  • G-40 Never commit unless the user asked for that commit. Stage the change, write the message, present the staged diff summary and the message, and stop; a request to implement, fix, finish, or run a step is not a request to commit, and the commit is made under the user's identity with no agent attribution.
  • G-42 Before making a change, name what it is for: the ticket, the scenario it satisfies, or the decision record or page that explains it, and put that reference where the change lives: the branch, the commit footer, the merge request, and the artifact. A change that cannot name its purpose is a ticket to create first or work not to do; in review, a hunk that traces to nothing is a finding.

For this step:

  • G-16 State assumptions and unverified claims explicitly, and put unresolved questions on the anchor ticket.
  • G-18 Change a requirement on its feature page in the knowledge base, under the ticket that asks for it, then pull the page into the repository. Never edit a feature file by hand; a change found while building is converted to the page format and proposed on the page for its owner to approve.
  • G-19 Tag every Approved scenario on its feature page with the ticket that asked for it, and link the ticket to the page and the scenario ids.
  • G-41 Write every significant decision, technical, product, or process, as a decision record the moment it is made: one screen, numbered next in the repository's sequence, dated, with context, options considered, decision, and consequences, linked from the anchor ticket. Never edit an accepted record; supersede it with a new one that links back.
  • Follow the data. Start from what is valuable and trace how it moves; threats appear at every boundary it crosses.
  • Accept explicitly. An accepted risk with a named owner and a reason is a decision; an unmentioned risk is a surprise.
  • Make mitigations testable. "Validate input" is not a requirement; "Given a payload over the size limit, then the request is rejected with a logged event" is.

Tenets T-07, T-11, T-12 | Opinions O-18

Security test /aa-sec-security-test

Test the built system for the weaknesses the threat model and common weakness classes predict, and produce evidence for the compliance report. Raises tickets for what it finds.

Anchors on a ticket. Skill: src/aa-sdlc/skills/security/security-test/SKILL.md

Reads
  • The threat model and security scenarios
  • The built and deployed system, or the code and dependencies for static checks
  • The project's security tooling category: static analysis, dependency scanning, dynamic testing
Produces

Security test results in the anchor ticket, with the run output in the documents folder or test system. Done when:

  • Every security scenario has a result; every finding has a severity and a ticket
  • Findings are reproducible from the recorded steps

Security compliance report in the knowledge base. Done when:

  • Maps each control the organisation requires to the evidence that it is met, or the ticket that will meet it
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

For this step:

  • G-04 Before marking a step done, run the project's build and tests and quote their actual output. "It should work" is not evidence.
  • G-13 Stop and ask before any irreversible action (deploy, delete, external message, merge to a protected branch) unless the user granted it in advance.
  • Test against the model first, the checklist second. The threat model says what matters here; the checklist says what matters everywhere.
  • Never test a production system without written permission on the ticket. Prefer a production-like environment.
  • Report findings without drama and without softening. Severity comes from impact and likelihood, not from how it will be received.

Tenets T-06, T-07

Maintain security and compliance /aa-sec-maintain-security

Keep the system safe after release: patch dependencies, rotate and remove secrets, review access, and keep the compliance evidence current. Recurring; each run anchors on a maintenance ticket.

Anchors on a ticket. Skill: src/aa-sdlc/skills/security/maintain-security/SKILL.md

Reads
  • Dependency and vulnerability reports from the project's tooling
  • The compliance report and the controls it must evidence
  • Secrets and access inventories where the project keeps them
Produces

Security patch log in the knowledge base, with each patch as a ticket. Done when:

  • Every known vulnerability above the agreed threshold is patched, accepted with a reason, or ticketed with a date

Compliance audit evidence in the knowledge base. Done when:

  • Every control has current evidence or an open ticket
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

From the code-change set: What every step that changes code, configuration, or infrastructure does, on top of repository-write: format changed files, prove with the build and tests, plan before a multi-step change, reference the ticket, commit everything needed to build and operate, let the tools decide style, change dependencies through the package manager, and never let a hand-edited feature file through.

  • G-01 Always format the code for the changed files before committing, but do not format files that were not changed.
  • G-04 Before marking a step done, run the project's build and tests and quote their actual output. "It should work" is not evidence.
  • G-08 Before any multi-step change, write the plan and get it confirmed; one concern per commit and one ticket per branch is G-39.
  • G-09 Reference the anchor ticket in the branch name and every commit message.
  • G-11 Every artifact that belongs with the code goes into the same change set as the code, staged for the commit the user makes (G-40). Nothing that matters is left only on a local disk or in a conversation.
  • G-33 Write every commit message in Conventional Commits form: a type from the project's list, an optional scope, an imperative subject, a body that says why, and a footer carrying the ticket reference and any breaking change. One concern per commit (G-39); if you cannot name the type, split the commit.
  • G-37 Commit everything needed to build, deploy, and operate the software with the change that needs it: configuration templates, migrations, scripts, pipeline, infrastructure, container, and alert definitions, runbooks, and the development environment configuration. If a fresh clone plus the documented secrets could not build, deploy, and run the system after your change, something is missing from the repository; find it and commit it.
  • G-39 Make each commit one understandable change: one concern per commit, one ticket per branch, a subject that says what and a body that says why, small enough to review in one sitting. If the subject needs "and" or the diff needs a tour, split it.
  • G-40 Never commit unless the user asked for that commit. Stage the change, write the message, present the staged diff summary and the message, and stop; a request to implement, fix, finish, or run a step is not a request to commit, and the commit is made under the user's identity with no agent attribution.
  • G-42 Before making a change, name what it is for: the ticket, the scenario it satisfies, or the decision record or page that explains it, and put that reference where the change lives: the branch, the commit footer, the merge request, and the artifact. A change that cannot name its purpose is a ticket to create first or work not to do; in review, a hunk that traces to nothing is a finding.
  • G-44 Let the tools decide style: conventions live in the repository as formatter configuration and a static analyser rule set, the formatter runs on changed files and the analyser runs from the root build before a change is presented, and every finding is fixed or suppressed with a reason beside it. Never argue style in review; where a language has no known linter, record that once in the development environment configuration and expect the health warning.
  • G-45 Change dependencies only through the ecosystem's package manager: add, update, and remove with its commands so it resolves conflicts, surfaces warnings, and updates transitive dependencies and the lock file together, and stage the manifest and lock file changes as their own commit (G-39). Never edit a version in a manifest or lock file by hand; if the tool refuses, record the refusal on the ticket and resolve it, never bypass it.
  • G-56 Before a change is committed and before it is merged, check the feature files: every one carries its provenance header, matches its checksum, and is generated by a page. Refuse a change that fails, and say to change the page and pull it instead.

For this step:

  • G-13 Stop and ask before any irreversible action (deploy, delete, external message, merge to a protected branch) unless the user granted it in advance.
  • G-38 Never commit a secret value. Commit a configuration template that names every key with a placeholder for each secret, and record in the development environment configuration where each secret comes from and how a fresh clone obtains it.
  • Patch in small, tested steps. A dependency update is a change like any other: branch, test, review, merge (G-08). Make it with the package manager so the lock file and transitive graph move together; never edit a version by hand (O-22).
  • Never commit, log, or paste a secret, including in the report of having found one. Reference where it was, not what it was.
  • Treat "no findings" as a finding to verify. Confirm the scanner ran against the current code before reporting clean.

Tenets T-07 | Opinions O-16, O-22

Refinement rf

Turns requirements and priorities into a backlog of tickets that are ready to plan and build. Every ticket that leaves Refinement has scenarios, acceptance criteria, and a size, and is small enough to finish in one iteration.

Owns:

  • Breaking epics into stories and tasks in the ticket system
  • Making a single ticket ready: scenarios linked, acceptance criteria checkable, size agreed
  • The definition of ready, and holding tickets to it

Break work into tickets /aa-rf-plan-work

Turn an epic and the scenarios on its feature pages into stories and tasks in the ticket system, each small enough to finish in one iteration, each linked to the page and the scenarios it delivers.

Anchors on a ticket. Skill: src/aa-sdlc/skills/refinement/plan-work/SKILL.md

Reads
  • The anchor epic, its outcome, and its feature pages in the knowledge base
  • The architecture and technical constraints
  • Priority from Product Management
Produces

Stories and tasks in the ticket system, as children of the epic. Done when:

  • Every Approved scenario on the epic's feature pages is linked to exactly one story, which links to its page and names the scenario ids
  • Every such scenario carries its story's ticket tag on its feature page (G-19)
  • Every story can be finished in one iteration by one person or agent
  • Dependencies between stories are recorded as links, not prose
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

For this step:

  • G-18 Change a requirement on its feature page in the knowledge base, under the ticket that asks for it, then pull the page into the repository. Never edit a feature file by hand; a change found while building is converted to the page format and proposed on the page for its owner to approve.
  • G-19 Tag every Approved scenario on its feature page with the ticket that asked for it, and link the ticket to the page and the scenario ids.
  • G-28 Before recording a size, write on the ticket how the work will be built (what changes, what is unknown, what could go wrong) at a depth that matches the stakes, and cite that reasoning from the size. If a number is needed before that thinking exists, give a range labelled as a guess, do not record it as the size, and never commit an iteration on it.
  • G-52 Create every ticket as one of the five kinds, in the ticket system's name for it from the project config: an epic for an outcome, a story for one behaviour a user can observe with its scenarios, a task for a buildable piece of a story's plan, a bug for behaviour that contradicts a scenario, a spike for a time-boxed question; link each to its parent (task to story, story to epic).
  • Split by scenario, not by layer. A story that delivers one scenario end to end can be tested; a "backend story" and a "frontend story" cannot until both are done.
  • Keep the epic's outcome on every story. A story that cannot say which outcome it serves is either mis-filed or unnecessary.
  • Do not invent requirements while splitting. A gap found here goes back to Business Analysis as a question, not forward as a guess.

Tenets T-04, T-08, T-12

Make a ticket ready /aa-rf-refine-ticket

Bring one ticket to the definition of ready: scenarios linked and complete, acceptance criteria checkable, size agreed, dependencies clear, questions answered or owned.

Anchors on a ticket. Skill: src/aa-sdlc/skills/refinement/refine-ticket/SKILL.md

Reads
  • The ticket and its linked scenarios on their feature pages
  • Open questions on the ticket
  • The team's definition of ready from the project config or knowledge base
Produces

Ready ticket in the ticket system. Done when:

  • Meets every item of the definition of ready, or says which item it does not and why it proceeds anyway
  • Acceptance criteria are the scenarios, not a restatement of them
  • Size is recorded with the implementation thinking that grounds it, and cites it
  • Records the repository revision and the feature page versions the scenarios were checked against (O-13, G-54)
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

For this step:

  • G-16 State assumptions and unverified claims explicitly, and put unresolved questions on the anchor ticket.
  • G-18 Change a requirement on its feature page in the knowledge base, under the ticket that asks for it, then pull the page into the repository. Never edit a feature file by hand; a change found while building is converted to the page format and proposed on the page for its owner to approve.
  • G-28 Before recording a size, write on the ticket how the work will be built (what changes, what is unknown, what could go wrong) at a depth that matches the stakes, and cite that reasoning from the size. If a number is needed before that thinking exists, give a range labelled as a guess, do not record it as the size, and never commit an iteration on it.
  • G-31 When a ticket is refined or its plan is confirmed, record on the ticket the repository revision its scenarios and plan were checked against.
  • G-51 Move a ticket to a life-cycle state only in the step that produces its evidence, and write that evidence on the ticket as it moves: Refined when its scenarios are linked and the revision recorded, Planned when the plan is confirmed and sized, In progress when work starts on its branch, In review when its merge request is open, Accepted when the stakeholder confirms it, Done when it is released; use the ticket system's names for the states as the project config maps them.
  • Read the scenarios before the ticket description. The description is what someone thought; the scenarios are what was agreed.
  • Size from the thinking, not the title. Before putting a number on it, write on the ticket what changes, what is unknown, and what could go wrong, at a depth that matches the stakes; a sentence for a small change, a full plan-implementation for a large one (O-10).
  • A ticket with an unanswered question that changes the scope is not ready, however small it looks.

Tenets T-04, T-07 | Opinions O-10, O-13

Project Management pm

Keeps the work flowing and visible. Plans iterations against capacity, reports status from the ticket system rather than from memory, and runs retrospectives that turn what happened into what changes next.

Owns:

  • Iteration planning: what is committed, against what capacity
  • Status reporting derived from the ticket system and source control
  • Retrospectives and the improvement backlog they produce
  • Impediment tracking and escalation

Plan an iteration /aa-pm-plan-iteration

Commit a set of ready tickets to an iteration against known capacity, in priority order, and record the commitment and the risks in the ticket system.

A ticket is optional. Skill: src/aa-sdlc/skills/project-management/plan-iteration/SKILL.md

Reads
  • The ordered backlog and which tickets are ready
  • Capacity for the iteration, whatever unit the team uses
  • Carry-over from the previous iteration and its reasons
Produces

Iteration plan in the ticket system, as the iteration or milestone with its committed tickets. Done when:

  • Committed size does not exceed capacity, or the overage is explicit and agreed
  • Every committed ticket is ready; none is blocked by an uncommitted one
  • Risks and assumptions are recorded on the iteration
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

For this step:

  • G-13 Stop and ask before any irreversible action (deploy, delete, external message, merge to a protected branch) unless the user granted it in advance.
  • G-28 Before recording a size, write on the ticket how the work will be built (what changes, what is unknown, what could go wrong) at a depth that matches the stakes, and cite that reasoning from the size. If a number is needed before that thinking exists, give a range labelled as a guess, do not record it as the size, and never commit an iteration on it.
  • Fill in priority order and stop at capacity. Do not pull a lower item over a higher one because it is smaller unless the higher one is blocked.
  • Capacity is computed, not felt. Use the team's actual completed size from recent iterations, calculated with a tool (G-02).
  • Commitment is a proposal until the people doing the work agree; present it and ask.

Tenets T-06, T-07, T-13

Report status /aa-pm-status

Produce a status report for an iteration, epic, or release from the ticket system and source control, not from memory or opinion: done, in progress, blocked, at risk, and why.

A ticket is optional. Skill: src/aa-sdlc/skills/project-management/status/SKILL.md

Reads
  • The ticket system state for the scope requested
  • Source control activity: branches, merge requests, and their state
  • The previous status report, for what changed
Produces

Status report in returned to the user; posted to the knowledge base or the iteration ticket if asked. Done when:

  • Every claim traces to a ticket or a merge request
  • Blocked and at-risk items name the blocker and who owns unblocking it
  • Says what changed since the last report
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

For this step:

  • G-04 Before marking a step done, run the project's build and tests and quote their actual output. "It should work" is not evidence.
  • Count with a tool and quote the count. "Most tickets are done" is not status; "14 of 19 committed tickets are done, 3 in review, 2 blocked" is.
  • Report the blocked item before the finished ones. The reader can act on a blocker; they cannot act on praise.
  • Say what you could not see. If a system was unreachable, the report says so rather than silently omitting it.

Tenets T-04, T-07

Run a retrospective /aa-pm-retrospective

Look at what actually happened in an iteration, release, or quarter, using the record rather than recollection, and turn it into a small number of concrete improvements with owners and tickets.

A ticket is optional. Skill: src/aa-sdlc/skills/project-management/retrospective/SKILL.md

Reads
  • Ticket system history: cycle times, carry-over, blockers, reopened tickets
  • Incident and post-mortem records for the period
  • Input from the people involved, where the user provides it
Produces

Workflow health report in the knowledge base. Done when:

  • States what the data shows before what people felt, and distinguishes the two
  • Names the top three things to keep and the top three to change

Process improvement backlog in the ticket system. Done when:

  • Every "change" is a ticket with an owner and a way to tell whether it worked
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

For this step:

  • G-41 Write every significant decision, technical, product, or process, as a decision record the moment it is made: one screen, numbered next in the repository's sequence, dated, with context, options considered, decision, and consequences, linked from the anchor ticket. Never edit an accepted record; supersede it with a new one that links back.
  • Measure first, then ask. Present the numbers before opinions so the discussion is about causes, not impressions.
  • Three changes, not thirty. An improvement backlog nobody works is a complaint log.
  • Check the last retrospective's changes first. If they were not done, that is the first finding.

Tenets T-07, T-13 | Opinions O-18

Implementation Planning ip

Plans how one ticket will be built before anyone builds it. Reads the scenarios, the architecture, and the code that exists, and writes a plan the ticket carries: what changes, where, in what order, with what tests, and what could go wrong.

Owns:

  • The implementation plan on the anchor ticket
  • Breaking a plan into tasks when the ticket is too large to plan as one change
  • Identifying risks, unknowns, and dependencies before build starts

Plan an implementation /aa-ip-plan-implementation

Before building a ticket, write down how: which files and components change, in what order, what tests prove each step, what could go wrong, and what is still unknown. The plan lives on the ticket and is confirmed before build starts.

Anchors on a ticket. Skill: src/aa-sdlc/skills/implementation-planning/plan-implementation/SKILL.md

Reads
  • The ready ticket, its scenarios, and the implementation thinking its size was based on
  • The architecture, decision records, and technical constraints
  • The current code, read, not remembered
  • What changed in the linked feature pages, their feature files, and the code since the ticket was refined (O-13)
Produces

Implementation plan in the anchor ticket. Done when:

  • Lists the changes in build order, each with the test that proves it
  • Names the risks and unknowns, and how each will be resolved or accepted
  • Says which tiers of test the change touches (O-07)
  • Confirmed by the user or the ticket owner before implement runs
  • Records the repository revision and the feature page versions it was written against (O-13)
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

For this step:

  • G-08 Before any multi-step change, write the plan and get it confirmed; one concern per commit and one ticket per branch is G-39.
  • G-16 State assumptions and unverified claims explicitly, and put unresolved questions on the anchor ticket.
  • G-23 State a time box for any open-ended investigation before starting it, stop when it is reached, and report what was found either way.
  • G-28 Before recording a size, write on the ticket how the work will be built (what changes, what is unknown, what could go wrong) at a depth that matches the stakes, and cite that reasoning from the size. If a number is needed before that thinking exists, give a range labelled as a guess, do not record it as the size, and never commit an iteration on it.
  • G-31 When a ticket is refined or its plan is confirmed, record on the ticket the repository revision its scenarios and plan were checked against.
  • G-32 Before starting work on a ticket, compare the repository at the revision recorded on the ticket with the current head, list the changes to the linked feature files and to the files the plan names, and record on the ticket whether the scenarios and plan still hold. A conflict goes back to refinement as a question on the ticket; never absorb it silently or start anyway without saying so.
  • G-43 Design for the scenarios that exist, not the ones you expect: choose the simplest structure that satisfies them, and add an abstraction, extension point, configuration option, or feature only when a scenario requires it or a decision record justifies it, naming which. In review, code or structure that serves no scenario is a finding, and so is a fourth copy of the same code where one named thing would do.
  • G-51 Move a ticket to a life-cycle state only in the step that produces its evidence, and write that evidence on the ticket as it moves: Refined when its scenarios are linked and the revision recorded, Planned when the plan is confirmed and sized, In progress when work starts on its branch, In review when its merge request is open, Accepted when the stakeholder confirms it, Done when it is released; use the ticket system's names for the states as the project config maps them.
  • Read the code you will change before planning the change. A plan written from the architecture diagram alone will meet the real code and lose.
  • Check the ticket against the repository and the pages first. If the feature pages, the feature files, or the code moved since refinement, say what changed and whether the scenarios still hold before planning against them (O-13).
  • Plan the tests with the steps. A step with no test is a step you cannot know is done.
  • Plan the smallest change that makes the scenarios pass. A step that adds an option, a generalisation, or a feature no scenario needs comes out of the plan (O-20).
  • Prefer the plan that can be abandoned halfway. Order changes so that stopping after any step leaves the system working.
  • If the plan is longer than the change, the ticket is too big; hand it back to Refinement to split.
  • Check the size against the plan. If the plan reveals more than the sizing reasoning saw, revise the size on the ticket and say why (O-10).

Tenets T-06, T-07 | Opinions O-10, O-13, O-20

Break a plan into tasks /aa-ip-breakdown-tasks

When a confirmed plan is too large to build as one change, split it into tasks on the ticket, each independently buildable and testable, with their order and dependencies.

Anchors on a ticket. Skill: src/aa-sdlc/skills/implementation-planning/breakdown-tasks/SKILL.md

Reads
  • The confirmed implementation plan
Produces

Tasks in the ticket system, as children or a checklist of the anchor ticket. Done when:

  • Each task maps to one or more plan steps and names its test
  • Order and dependencies are explicit
  • The sum of the tasks is the whole plan; nothing is left implicit
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

For this step:

  • G-08 Before any multi-step change, write the plan and get it confirmed; one concern per commit and one ticket per branch is G-39.
  • G-52 Create every ticket as one of the five kinds, in the ticket system's name for it from the project config: an epic for an outcome, a story for one behaviour a user can observe with its scenarios, a task for a buildable piece of a story's plan, a bug for behaviour that contradicts a scenario, a spike for a time-boxed question; link each to its parent (task to story, story to epic).
  • A task is done when its test passes and its change is committed, not when its code exists.
  • Keep tasks at a size where the first commit is an hour away, not a day.

Tenets T-07

Development dev

Builds the software and proves it meets the requirement. Every change ships with the tests that show its scenarios pass, is reviewed, and is merged on a branch that references its ticket. Development owns "it works"; Testing owns "and here is what we did not think of".

Owns:

  • Application code, schema, migrations, and integration code for a ticket
  • Proving the requirement is met, with unit tests, integration tests, and happy-path end-to-end tests for every scenario the ticket delivers (O-08, G-20)
  • Code review and merge
  • Defect fixes, reproduced before fixed
  • Performance optimisation of existing code

Set up the development environment /aa-dev-setup-environment

Make a fresh clone buildable and testable: fill in the root scripts, configure the tools the stack needs, and record anything a new developer must do by hand.

Anchors on a ticket. Skill: src/aa-sdlc/skills/development/setup-environment/SKILL.md

Reads
  • The technology stack document and constraints
  • The stub root scripts from aa init, or the existing scripts
  • Tech-stack plugins in scope
Produces

Repository structure in the repository root. Done when:

  • Follows the conventional structure or maps to it in the project config (O-05)

Working root scripts in the repository root. Done when:

  • initialize, build, test, and pack each run to completion on a fresh clone (O-06)
  • test accepts a tier parameter and each tier has a home (O-07)
  • build accepts a lint switch that runs the formatter check and every configured static analyser; each analyser reads a committed rule set whose baseline and departures are in a decision record; languages with no known analyser are recorded in the development environment configuration (O-21)
  • The e2e tier starts the system and its dependencies in containers from definitions in the repository, where the stack allows (O-12)

Development environment configuration in the documents folder. Done when:

  • Anything not automated by initialize is written down as a step with a reason
  • Names where every secret comes from and how a fresh clone obtains it; no secret value is committed (O-16)
  • Environment-specific settings are in one environment template per environment; functional settings are in the application configuration once; no key is in both (O-25)
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

From the code-change set: What every step that changes code, configuration, or infrastructure does, on top of repository-write: format changed files, prove with the build and tests, plan before a multi-step change, reference the ticket, commit everything needed to build and operate, let the tools decide style, change dependencies through the package manager, and never let a hand-edited feature file through.

  • G-01 Always format the code for the changed files before committing, but do not format files that were not changed.
  • G-04 Before marking a step done, run the project's build and tests and quote their actual output. "It should work" is not evidence.
  • G-08 Before any multi-step change, write the plan and get it confirmed; one concern per commit and one ticket per branch is G-39.
  • G-09 Reference the anchor ticket in the branch name and every commit message.
  • G-11 Every artifact that belongs with the code goes into the same change set as the code, staged for the commit the user makes (G-40). Nothing that matters is left only on a local disk or in a conversation.
  • G-33 Write every commit message in Conventional Commits form: a type from the project's list, an optional scope, an imperative subject, a body that says why, and a footer carrying the ticket reference and any breaking change. One concern per commit (G-39); if you cannot name the type, split the commit.
  • G-37 Commit everything needed to build, deploy, and operate the software with the change that needs it: configuration templates, migrations, scripts, pipeline, infrastructure, container, and alert definitions, runbooks, and the development environment configuration. If a fresh clone plus the documented secrets could not build, deploy, and run the system after your change, something is missing from the repository; find it and commit it.
  • G-39 Make each commit one understandable change: one concern per commit, one ticket per branch, a subject that says what and a body that says why, small enough to review in one sitting. If the subject needs "and" or the diff needs a tour, split it.
  • G-40 Never commit unless the user asked for that commit. Stage the change, write the message, present the staged diff summary and the message, and stop; a request to implement, fix, finish, or run a step is not a request to commit, and the commit is made under the user's identity with no agent attribution.
  • G-42 Before making a change, name what it is for: the ticket, the scenario it satisfies, or the decision record or page that explains it, and put that reference where the change lives: the branch, the commit footer, the merge request, and the artifact. A change that cannot name its purpose is a ticket to create first or work not to do; in review, a hunk that traces to nothing is a finding.
  • G-44 Let the tools decide style: conventions live in the repository as formatter configuration and a static analyser rule set, the formatter runs on changed files and the analyser runs from the root build before a change is presented, and every finding is fixed or suppressed with a reason beside it. Never argue style in review; where a language has no known linter, record that once in the development environment configuration and expect the health warning.
  • G-45 Change dependencies only through the ecosystem's package manager: add, update, and remove with its commands so it resolves conflicts, surfaces warnings, and updates transitive dependencies and the lock file together, and stage the manifest and lock file changes as their own commit (G-39). Never edit a version in a manifest or lock file by hand; if the tool refuses, record the refusal on the ticket and resolve it, never bypass it.
  • G-56 Before a change is committed and before it is merged, check the feature files: every one carries its provenance header, matches its checksum, and is generated by a page. Refuse a change that fails, and say to change the page and pull it instead.

For this step:

  • G-29 Put every pipeline step's logic in a root script or a command committed to the repository and call it from the pipeline with the same arguments; when a pipeline step fails, reproduce it locally with that same script before changing anything. A step that can only run in the pipeline is a defect: ticket it and move the logic out.
  • G-30 Run the end-to-end tier against the system and its dependencies started in containers from definitions committed to the repository, so it runs the same way on any machine and in the pipeline. Reach a shared environment only for a dependency that cannot be containerised, and record which tests depend on it.
  • G-38 Never commit a secret value. Commit a configuration template that names every key with a placeholder for each secret, and record in the development environment configuration where each secret comes from and how a fresh clone obtains it.
  • G-48 Split configuration by what varies: settings that differ between environments (endpoints, connection strings, resource names, credentials) go in an environment file or the platform's equivalent, one per environment with a committed template, supplied at deploy time; settings that are the same everywhere (timeouts, limits, behaviour) go in the application configuration committed once with the code. Never put a key in both; when adding a setting, ask which kind it is and put it in that one place, and if a functional setting must differ for one environment, record why in a decision record rather than copying the configuration.
  • G-50 Start each language's static analyser rule set from a published best-practice baseline for the language, framework version, and kind of application, or from a widely used alternative the user picks, or from the user's stated preferences; tailor it in the rule set file rather than with suppressions in code, and record the baseline, its version, and every departure with its reason in a decision record.
  • Prove it on a clean clone. Clone to a temporary folder and run initialize, build, test, and pack there before calling it done.
  • Automate before documenting. A manual step in the documentation is a bug in initialize until it is proven to be impossible to automate.
  • Do not choose tools the project has not chosen. Use what the stack document, plugins, and existing config name; where nothing does, ask.
  • Whatever the pipeline will run, make it a script here first. A step that only works on the pipeline runner is a defect (O-11).
  • The fresh clone is the test. If it needs a file from your machine, a page from the wiki, or a value from your head, commit the template and document the source (O-16).

Tenets T-01, T-07 | Opinions O-05, O-06, O-07, O-11, O-12, O-16, O-17, O-21, O-22, O-25

Implement a ticket /aa-dev-implement

Build what the anchor ticket asks for, with the tests that prove it, on a branch that references the ticket, following the confirmed plan.

Anchors on a ticket. Skill: src/aa-sdlc/skills/development/implement/SKILL.md

Reads
  • The anchor ticket and its scenarios, pulled from their feature pages into the feature files (G-54)
  • The confirmed implementation plan and tasks
  • The current code, read before it is changed
  • What changed in the linked feature pages, their feature files, and the files the plan names since the ticket was planned (O-13)
Produces

Application code in source folder, on a branch named per the ticket convention. Done when:

  • Builds with the root build script, and passes it with the lint switch (O-21)
  • Every scenario for the ticket has a passing unit test, integration test, and happy-path end-to-end test, as the change warrants each tier
  • Follows the plan, or the deviation is recorded on the ticket with the reason
  • No feature file was edited by hand; the feature-file check passes (G-56)

Tests that prove the requirement in unit tests with the project; integration and happy-path end-to-end tests under tests/. Done when:

  • Happy paths, general permutations, and obvious negative cases are covered (G-20)
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

From the code-change set: What every step that changes code, configuration, or infrastructure does, on top of repository-write: format changed files, prove with the build and tests, plan before a multi-step change, reference the ticket, commit everything needed to build and operate, let the tools decide style, change dependencies through the package manager, and never let a hand-edited feature file through.

  • G-01 Always format the code for the changed files before committing, but do not format files that were not changed.
  • G-04 Before marking a step done, run the project's build and tests and quote their actual output. "It should work" is not evidence.
  • G-08 Before any multi-step change, write the plan and get it confirmed; one concern per commit and one ticket per branch is G-39.
  • G-09 Reference the anchor ticket in the branch name and every commit message.
  • G-11 Every artifact that belongs with the code goes into the same change set as the code, staged for the commit the user makes (G-40). Nothing that matters is left only on a local disk or in a conversation.
  • G-33 Write every commit message in Conventional Commits form: a type from the project's list, an optional scope, an imperative subject, a body that says why, and a footer carrying the ticket reference and any breaking change. One concern per commit (G-39); if you cannot name the type, split the commit.
  • G-37 Commit everything needed to build, deploy, and operate the software with the change that needs it: configuration templates, migrations, scripts, pipeline, infrastructure, container, and alert definitions, runbooks, and the development environment configuration. If a fresh clone plus the documented secrets could not build, deploy, and run the system after your change, something is missing from the repository; find it and commit it.
  • G-39 Make each commit one understandable change: one concern per commit, one ticket per branch, a subject that says what and a body that says why, small enough to review in one sitting. If the subject needs "and" or the diff needs a tour, split it.
  • G-40 Never commit unless the user asked for that commit. Stage the change, write the message, present the staged diff summary and the message, and stop; a request to implement, fix, finish, or run a step is not a request to commit, and the commit is made under the user's identity with no agent attribution.
  • G-42 Before making a change, name what it is for: the ticket, the scenario it satisfies, or the decision record or page that explains it, and put that reference where the change lives: the branch, the commit footer, the merge request, and the artifact. A change that cannot name its purpose is a ticket to create first or work not to do; in review, a hunk that traces to nothing is a finding.
  • G-44 Let the tools decide style: conventions live in the repository as formatter configuration and a static analyser rule set, the formatter runs on changed files and the analyser runs from the root build before a change is presented, and every finding is fixed or suppressed with a reason beside it. Never argue style in review; where a language has no known linter, record that once in the development environment configuration and expect the health warning.
  • G-45 Change dependencies only through the ecosystem's package manager: add, update, and remove with its commands so it resolves conflicts, surfaces warnings, and updates transitive dependencies and the lock file together, and stage the manifest and lock file changes as their own commit (G-39). Never edit a version in a manifest or lock file by hand; if the tool refuses, record the refusal on the ticket and resolve it, never bypass it.
  • G-56 Before a change is committed and before it is merged, check the feature files: every one carries its provenance header, matches its checksum, and is generated by a page. Refuse a change that fails, and say to change the page and pull it instead.

From the test-writing set: What every step that writes or extends automated tests does: prove with the actual run, and keep every test deterministic and independent.

  • G-46 Make every test deterministic and independent: inject or freeze time, seed or inject randomness, give each test its own state and clean it up, and replace external dependencies with a container, a fake, or a recorded response; never depend on test order, on state another test left, or on a sleep. A test that fails intermittently is a defect: quarantine it with a ticket the same day, never retry it into green or skip it without one (G-06).

For this step:

  • G-05 Reproduce a bug with a failing test or a captured observation before changing any code to fix it.
  • G-17 After three failed attempts at the same fix, stop and reassess the approach rather than trying a fourth variation.
  • G-20 When implementing a ticket, write the automated tests that prove it: unit and integration tests for every happy path, the general permutations and cases, and the obvious negative cases, plus a happy-path end-to-end test for each scenario. The ticket is not done until they exist and pass.
  • G-30 Run the end-to-end tier against the system and its dependencies started in containers from definitions committed to the repository, so it runs the same way on any machine and in the pipeline. Reach a shared environment only for a dependency that cannot be containerised, and record which tests depend on it.
  • G-32 Before starting work on a ticket, compare the repository at the revision recorded on the ticket with the current head, list the changes to the linked feature files and to the files the plan names, and record on the ticket whether the scenarios and plan still hold. A conflict goes back to refinement as a question on the ticket; never absorb it silently or start anyway without saying so.
  • G-43 Design for the scenarios that exist, not the ones you expect: choose the simplest structure that satisfies them, and add an abstraction, extension point, configuration option, or feature only when a scenario requires it or a decision record justifies it, naming which. In review, code or structure that serves no scenario is a finding, and so is a fourth copy of the same code where one named thing would do.
  • G-48 Split configuration by what varies: settings that differ between environments (endpoints, connection strings, resource names, credentials) go in an environment file or the platform's equivalent, one per environment with a committed template, supplied at deploy time; settings that are the same everywhere (timeouts, limits, behaviour) go in the application configuration committed once with the code. Never put a key in both; when adding a setting, ask which kind it is and put it in that one place, and if a functional setting must differ for one environment, record why in a decision record rather than copying the configuration.
  • G-49 Give every feature a stable id (F-nnn) and every scenario one derived from it (F-nnn-nn), assigned on its feature page once and never renumbered or reused; tag or name every automated test with the ids of the scenarios it proves, so coverage is the set of scenario ids that at least one test names.
  • G-51 Move a ticket to a life-cycle state only in the step that produces its evidence, and write that evidence on the ticket as it moves: Refined when its scenarios are linked and the revision recorded, Planned when the plan is confirmed and sized, In progress when work starts on its branch, In review when its merge request is open, Accepted when the stakeholder confirms it, Done when it is released; use the ticket system's names for the states as the project config maps them.
  • Check the ticket against the repository and the pages before anything else. Compare the page versions recorded on the ticket with the pages' current versions, and diff from the recorded revision to the head, filtered to the feature files and the files the plan names; record the result on the ticket, and send a conflict back to refinement rather than building on it (O-13).
  • Write the failing test for the scenario before the code that passes it. Then the code has one job.
  • Control what varies. Inject or freeze time, seed randomness, own the test data, and fake or containerise external dependencies; a test with a sleep or a live call in it is not finished (O-23).
  • Stop at every green. Stage the change, write a Conventional Commit message that names its type and its ticket (O-14), present the staged diff and the message, and wait; commit only if the user asked for that commit (O-17).
  • When the plan meets reality and loses, stop and update the plan on the ticket before continuing. Do not improvise silently.
  • Never edit a feature file. A scenario found wrong or missing while building is converted to the page format with ConvertTo-FeaturePage and proposed on its feature page for its owner to approve; the repository gets it only by pulling the page once it is Approved (G-18).
  • Do not widen the change. Adjacent problems become tickets, not fixes on this branch; every hunk on the branch names the ticket, scenario, or decision it serves (O-19).
  • Change a dependency with the package manager, never by editing a version in a file. If the tool refuses, the refusal goes on the ticket; it is not bypassed (O-22).
  • Ship the change with what it needs to run: the migration, the new configuration key in every template, the updated runbook. A change that works on your machine because of a file only you have is not done (O-16).
  • Put each new setting in one place. If its value differs between environments it goes in every environment template; if it does not, it goes in the application configuration once (O-25).

Tenets T-04, T-07 | Opinions O-08, O-12, O-13, O-14, O-16, O-17, O-19, O-20, O-21, O-22, O-23, O-25

Fix a defect /aa-dev-fix-bug

Reproduce a reported defect with a failing test, find the cause, fix the cause, and prove it with the test now passing, on a branch that references the ticket.

Anchors on a ticket. Skill: src/aa-sdlc/skills/development/fix-bug/SKILL.md

Reads
  • The defect ticket: symptoms, environment, steps to reproduce, severity
  • The scenario the defect violates, if one exists, pulled from its feature page (G-54)
Produces

Reproducing test in the test tier where the defect is observable. Done when:

  • Fails before the fix and passes after; staged with the fix for the user to commit (O-17)

Fix in source folder, on a branch named per the ticket convention. Done when:

  • Addresses the cause, not the symptom; the ticket says what the cause was
  • No existing test was weakened or skipped to make it pass
  • No feature file was edited by hand; the feature-file check passes (G-56)
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

From the code-change set: What every step that changes code, configuration, or infrastructure does, on top of repository-write: format changed files, prove with the build and tests, plan before a multi-step change, reference the ticket, commit everything needed to build and operate, let the tools decide style, change dependencies through the package manager, and never let a hand-edited feature file through.

  • G-01 Always format the code for the changed files before committing, but do not format files that were not changed.
  • G-04 Before marking a step done, run the project's build and tests and quote their actual output. "It should work" is not evidence.
  • G-08 Before any multi-step change, write the plan and get it confirmed; one concern per commit and one ticket per branch is G-39.
  • G-09 Reference the anchor ticket in the branch name and every commit message.
  • G-11 Every artifact that belongs with the code goes into the same change set as the code, staged for the commit the user makes (G-40). Nothing that matters is left only on a local disk or in a conversation.
  • G-33 Write every commit message in Conventional Commits form: a type from the project's list, an optional scope, an imperative subject, a body that says why, and a footer carrying the ticket reference and any breaking change. One concern per commit (G-39); if you cannot name the type, split the commit.
  • G-37 Commit everything needed to build, deploy, and operate the software with the change that needs it: configuration templates, migrations, scripts, pipeline, infrastructure, container, and alert definitions, runbooks, and the development environment configuration. If a fresh clone plus the documented secrets could not build, deploy, and run the system after your change, something is missing from the repository; find it and commit it.
  • G-39 Make each commit one understandable change: one concern per commit, one ticket per branch, a subject that says what and a body that says why, small enough to review in one sitting. If the subject needs "and" or the diff needs a tour, split it.
  • G-40 Never commit unless the user asked for that commit. Stage the change, write the message, present the staged diff summary and the message, and stop; a request to implement, fix, finish, or run a step is not a request to commit, and the commit is made under the user's identity with no agent attribution.
  • G-42 Before making a change, name what it is for: the ticket, the scenario it satisfies, or the decision record or page that explains it, and put that reference where the change lives: the branch, the commit footer, the merge request, and the artifact. A change that cannot name its purpose is a ticket to create first or work not to do; in review, a hunk that traces to nothing is a finding.
  • G-44 Let the tools decide style: conventions live in the repository as formatter configuration and a static analyser rule set, the formatter runs on changed files and the analyser runs from the root build before a change is presented, and every finding is fixed or suppressed with a reason beside it. Never argue style in review; where a language has no known linter, record that once in the development environment configuration and expect the health warning.
  • G-45 Change dependencies only through the ecosystem's package manager: add, update, and remove with its commands so it resolves conflicts, surfaces warnings, and updates transitive dependencies and the lock file together, and stage the manifest and lock file changes as their own commit (G-39). Never edit a version in a manifest or lock file by hand; if the tool refuses, record the refusal on the ticket and resolve it, never bypass it.
  • G-56 Before a change is committed and before it is merged, check the feature files: every one carries its provenance header, matches its checksum, and is generated by a page. Refuse a change that fails, and say to change the page and pull it instead.

From the test-writing set: What every step that writes or extends automated tests does: prove with the actual run, and keep every test deterministic and independent.

  • G-46 Make every test deterministic and independent: inject or freeze time, seed or inject randomness, give each test its own state and clean it up, and replace external dependencies with a container, a fake, or a recorded response; never depend on test order, on state another test left, or on a sleep. A test that fails intermittently is a defect: quarantine it with a ticket the same day, never retry it into green or skip it without one (G-06).

For this step:

  • G-05 Reproduce a bug with a failing test or a captured observation before changing any code to fix it.
  • G-17 After three failed attempts at the same fix, stop and reassess the approach rather than trying a fourth variation.
  • G-29 Put every pipeline step's logic in a root script or a command committed to the repository and call it from the pipeline with the same arguments; when a pipeline step fails, reproduce it locally with that same script before changing anything. A step that can only run in the pipeline is a defect: ticket it and move the logic out.
  • G-32 Before starting work on a ticket, compare the repository at the revision recorded on the ticket with the current head, list the changes to the linked feature files and to the files the plan names, and record on the ticket whether the scenarios and plan still hold. A conflict goes back to refinement as a question on the ticket; never absorb it silently or start anyway without saying so.
  • No reproduction, no fix. If it cannot be reproduced, the ticket gets what was tried and goes back for more information.
  • Find the cause before touching code. Form a hypothesis, test it, and record the result on the ticket; three hypotheses without evidence means stop and reassess (G-17).
  • If the defect violates no scenario, one is missing. Propose it on its feature page for its owner to approve, never in the feature file; the fix proceeds against it once it is Approved, or the ticket names it as pending approval (G-18).

Tenets T-07, T-12 | Opinions O-13, O-14, O-17, O-19, O-21, O-22, O-23

Review code /aa-dev-review

Review a merge request against its ticket, its scenarios, its plan, and the project's conventions, and record findings on the merge request where the author will see them.

Anchors on a ticket. Skill: src/aa-sdlc/skills/development/review/SKILL.md

Reads
  • The merge request and its diff
  • The ticket, its scenarios pulled from their feature pages, and the implementation plan
  • The feature files on the branch
  • The build and test results for the branch
Produces

Review findings in the merge request, as comments, with a summary on the ticket. Done when:

  • Each finding names the file and line, says what is wrong and why, and is marked blocking or not
  • The review states whether every scenario has a test and whether the plan was followed
  • Every hunk in the diff traces to a scenario of the ticket or a stated reason; one that does not is a finding (O-19)
  • A manifest changed without its lock file, or a lock file edited by hand, is a blocking finding (O-22)
  • A test that depends on order, real time, unseeded randomness, shared state, or a live dependency, or a retry added to a test, is a blocking finding (O-23)
  • A setting in the wrong place, an endpoint in the application configuration or a timeout in an environment file, is a finding (O-25)
  • A feature file that fails the feature-file check (no provenance header, a checksum mismatch, or no page that generates it) is a blocking finding; the fix is to change the page and pull it (G-56)
  • The review says what it did not check
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

For this step:

  • G-04 Before marking a step done, run the project's build and tests and quote their actual output. "It should work" is not evidence.
  • G-33 Write every commit message in Conventional Commits form: a type from the project's list, an optional scope, an imperative subject, a body that says why, and a footer carrying the ticket reference and any breaking change. One concern per commit (G-39); if you cannot name the type, split the commit.
  • G-39 Make each commit one understandable change: one concern per commit, one ticket per branch, a subject that says what and a body that says why, small enough to review in one sitting. If the subject needs "and" or the diff needs a tour, split it.
  • G-42 Before making a change, name what it is for: the ticket, the scenario it satisfies, or the decision record or page that explains it, and put that reference where the change lives: the branch, the commit footer, the merge request, and the artifact. A change that cannot name its purpose is a ticket to create first or work not to do; in review, a hunk that traces to nothing is a finding.
  • G-43 Design for the scenarios that exist, not the ones you expect: choose the simplest structure that satisfies them, and add an abstraction, extension point, configuration option, or feature only when a scenario requires it or a decision record justifies it, naming which. In review, code or structure that serves no scenario is a finding, and so is a fourth copy of the same code where one named thing would do.
  • G-44 Let the tools decide style: conventions live in the repository as formatter configuration and a static analyser rule set, the formatter runs on changed files and the analyser runs from the root build before a change is presented, and every finding is fixed or suppressed with a reason beside it. Never argue style in review; where a language has no known linter, record that once in the development environment configuration and expect the health warning.
  • G-45 Change dependencies only through the ecosystem's package manager: add, update, and remove with its commands so it resolves conflicts, surfaces warnings, and updates transitive dependencies and the lock file together, and stage the manifest and lock file changes as their own commit (G-39). Never edit a version in a manifest or lock file by hand; if the tool refuses, record the refusal on the ticket and resolve it, never bypass it.
  • G-46 Make every test deterministic and independent: inject or freeze time, seed or inject randomness, give each test its own state and clean it up, and replace external dependencies with a container, a fake, or a recorded response; never depend on test order, on state another test left, or on a sleep. A test that fails intermittently is a defect: quarantine it with a ticket the same day, never retry it into green or skip it without one (G-06).
  • G-48 Split configuration by what varies: settings that differ between environments (endpoints, connection strings, resource names, credentials) go in an environment file or the platform's equivalent, one per environment with a committed template, supplied at deploy time; settings that are the same everywhere (timeouts, limits, behaviour) go in the application configuration committed once with the code. Never put a key in both; when adding a setting, ask which kind it is and put it in that one place, and if a functional setting must differ for one environment, record why in a decision record rather than copying the configuration.
  • Read the ticket and scenarios before the diff. A diff reviewed without its purpose is proofread, not reviewed.
  • Run it. Build and test the branch yourself; do not trust a green badge you did not see produced.
  • Run the feature-file check on the branch every time. A feature file with no provenance header, a checksum that does not match, or no page that generates it was not pulled from the knowledge base; it blocks the change until the page is changed and pulled (G-56).
  • Blocking findings are about correctness, security, and the requirement. Style is the formatter's and linter's job, never a review comment (O-21); if a style issue reached review, the finding is that the tools did not run.
  • Check the commit messages as well as the diff. A commit that does not follow the configured format is a non-blocking finding that names the pattern (O-14).
  • Report faithfully: "approved" means every scenario has a passing test that you saw run.

Tenets T-07 | Opinions O-14, O-17, O-19, O-20, O-21, O-22, O-23, O-25

Finish a branch /aa-dev-finish-branch

Take a branch from "the tests pass" to merged: format changed files, rebase or merge from the target branch, run the full test suite, open or update the merge request linked to the ticket, and transition the ticket.

Anchors on a ticket. Skill: src/aa-sdlc/skills/development/finish-branch/SKILL.md

Reads
  • The branch and its ticket
  • The project's branch, commit, and merge conventions from the project config
Produces

Merge request in source control, linked from and to the ticket. Done when:

  • Title and description reference the ticket and summarise the change and its tests; every commit on the branch references the ticket (O-19)
  • Changed files are formatted; unrelated files are untouched (G-01); the root build passes with the lint switch (O-21)
  • Full test suite passes on the branch as it will be merged
  • The feature-file check passes on the branch as it will be merged; every feature file was pulled from its page (G-56)
  • Every commit on the branch is a Conventional Commit with a type from the project config (O-14), one cohesive change each, made by the user (O-17)

Ticket transition in the ticket system. Done when:

  • The ticket moves to the state the project uses for "in review" or "done", with the merge request linked
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

From the code-change set: What every step that changes code, configuration, or infrastructure does, on top of repository-write: format changed files, prove with the build and tests, plan before a multi-step change, reference the ticket, commit everything needed to build and operate, let the tools decide style, change dependencies through the package manager, and never let a hand-edited feature file through.

  • G-01 Always format the code for the changed files before committing, but do not format files that were not changed.
  • G-04 Before marking a step done, run the project's build and tests and quote their actual output. "It should work" is not evidence.
  • G-08 Before any multi-step change, write the plan and get it confirmed; one concern per commit and one ticket per branch is G-39.
  • G-09 Reference the anchor ticket in the branch name and every commit message.
  • G-11 Every artifact that belongs with the code goes into the same change set as the code, staged for the commit the user makes (G-40). Nothing that matters is left only on a local disk or in a conversation.
  • G-33 Write every commit message in Conventional Commits form: a type from the project's list, an optional scope, an imperative subject, a body that says why, and a footer carrying the ticket reference and any breaking change. One concern per commit (G-39); if you cannot name the type, split the commit.
  • G-37 Commit everything needed to build, deploy, and operate the software with the change that needs it: configuration templates, migrations, scripts, pipeline, infrastructure, container, and alert definitions, runbooks, and the development environment configuration. If a fresh clone plus the documented secrets could not build, deploy, and run the system after your change, something is missing from the repository; find it and commit it.
  • G-39 Make each commit one understandable change: one concern per commit, one ticket per branch, a subject that says what and a body that says why, small enough to review in one sitting. If the subject needs "and" or the diff needs a tour, split it.
  • G-40 Never commit unless the user asked for that commit. Stage the change, write the message, present the staged diff summary and the message, and stop; a request to implement, fix, finish, or run a step is not a request to commit, and the commit is made under the user's identity with no agent attribution.
  • G-42 Before making a change, name what it is for: the ticket, the scenario it satisfies, or the decision record or page that explains it, and put that reference where the change lives: the branch, the commit footer, the merge request, and the artifact. A change that cannot name its purpose is a ticket to create first or work not to do; in review, a hunk that traces to nothing is a finding.
  • G-44 Let the tools decide style: conventions live in the repository as formatter configuration and a static analyser rule set, the formatter runs on changed files and the analyser runs from the root build before a change is presented, and every finding is fixed or suppressed with a reason beside it. Never argue style in review; where a language has no known linter, record that once in the development environment configuration and expect the health warning.
  • G-45 Change dependencies only through the ecosystem's package manager: add, update, and remove with its commands so it resolves conflicts, surfaces warnings, and updates transitive dependencies and the lock file together, and stage the manifest and lock file changes as their own commit (G-39). Never edit a version in a manifest or lock file by hand; if the tool refuses, record the refusal on the ticket and resolve it, never bypass it.
  • G-56 Before a change is committed and before it is merged, check the feature files: every one carries its provenance header, matches its checksum, and is generated by a page. Refuse a change that fails, and say to change the page and pull it instead.

For this step:

  • G-13 Stop and ask before any irreversible action (deploy, delete, external message, merge to a protected branch) unless the user granted it in advance.
  • G-14 Never use a bypass flag on a hook, check, or protected branch. If a gate blocks, fix the cause or tell the user.
  • G-29 Put every pipeline step's logic in a root script or a command committed to the repository and call it from the pipeline with the same arguments; when a pipeline step fails, reproduce it locally with that same script before changing anything. A step that can only run in the pipeline is a defect: ticket it and move the logic out.
  • G-51 Move a ticket to a life-cycle state only in the step that produces its evidence, and write that evidence on the ticket as it moves: Refined when its scenarios are linked and the revision recorded, Planned when the plan is confirmed and sized, In progress when work starts on its branch, In review when its merge request is open, Accepted when the stakeholder confirms it, Done when it is released; use the ticket system's names for the states as the project config maps them.
  • Format only what you changed. Reformatting untouched files hides the change and creates conflicts for everyone else.
  • Bring the branch up to date before the final test run, and run the whole suite, not the tier you were working in.
  • Run the feature-file check before opening or merging the request. A feature file that fails it blocks the merge; change the page and pull it, never edit the file (G-56).
  • Never bypass a hook or a protected-branch rule. If a gate blocks, fix the cause or tell the user (G-14).
  • Merge only if the project's conventions let you; otherwise open the request and stop (G-13).
  • Never commit the remaining changes yourself. Stage them, present them, and report that the branch waits on the user's commit (O-17).

Tenets T-06, T-07 | Opinions O-14, O-17, O-19, O-21

Optimise performance /aa-dev-optimize

Improve the performance of existing code against a measured baseline: profile, change the thing the profile says, measure again, and keep the change only if the measurement improved without breaking a test.

Anchors on a ticket. Skill: src/aa-sdlc/skills/development/optimize/SKILL.md

Reads
  • The performance ticket with the target metric and baseline from performance-test
  • Profiling tools the project uses
Produces

Optimisation implementation report in the anchor ticket. Done when:

  • Baseline, change, and after measurement are recorded with the method used
  • The change is on a branch with all tests passing
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

From the code-change set: What every step that changes code, configuration, or infrastructure does, on top of repository-write: format changed files, prove with the build and tests, plan before a multi-step change, reference the ticket, commit everything needed to build and operate, let the tools decide style, change dependencies through the package manager, and never let a hand-edited feature file through.

  • G-01 Always format the code for the changed files before committing, but do not format files that were not changed.
  • G-04 Before marking a step done, run the project's build and tests and quote their actual output. "It should work" is not evidence.
  • G-08 Before any multi-step change, write the plan and get it confirmed; one concern per commit and one ticket per branch is G-39.
  • G-09 Reference the anchor ticket in the branch name and every commit message.
  • G-11 Every artifact that belongs with the code goes into the same change set as the code, staged for the commit the user makes (G-40). Nothing that matters is left only on a local disk or in a conversation.
  • G-33 Write every commit message in Conventional Commits form: a type from the project's list, an optional scope, an imperative subject, a body that says why, and a footer carrying the ticket reference and any breaking change. One concern per commit (G-39); if you cannot name the type, split the commit.
  • G-37 Commit everything needed to build, deploy, and operate the software with the change that needs it: configuration templates, migrations, scripts, pipeline, infrastructure, container, and alert definitions, runbooks, and the development environment configuration. If a fresh clone plus the documented secrets could not build, deploy, and run the system after your change, something is missing from the repository; find it and commit it.
  • G-39 Make each commit one understandable change: one concern per commit, one ticket per branch, a subject that says what and a body that says why, small enough to review in one sitting. If the subject needs "and" or the diff needs a tour, split it.
  • G-40 Never commit unless the user asked for that commit. Stage the change, write the message, present the staged diff summary and the message, and stop; a request to implement, fix, finish, or run a step is not a request to commit, and the commit is made under the user's identity with no agent attribution.
  • G-42 Before making a change, name what it is for: the ticket, the scenario it satisfies, or the decision record or page that explains it, and put that reference where the change lives: the branch, the commit footer, the merge request, and the artifact. A change that cannot name its purpose is a ticket to create first or work not to do; in review, a hunk that traces to nothing is a finding.
  • G-44 Let the tools decide style: conventions live in the repository as formatter configuration and a static analyser rule set, the formatter runs on changed files and the analyser runs from the root build before a change is presented, and every finding is fixed or suppressed with a reason beside it. Never argue style in review; where a language has no known linter, record that once in the development environment configuration and expect the health warning.
  • G-45 Change dependencies only through the ecosystem's package manager: add, update, and remove with its commands so it resolves conflicts, surfaces warnings, and updates transitive dependencies and the lock file together, and stage the manifest and lock file changes as their own commit (G-39). Never edit a version in a manifest or lock file by hand; if the tool refuses, record the refusal on the ticket and resolve it, never bypass it.
  • G-56 Before a change is committed and before it is merged, check the feature files: every one carries its provenance header, matches its checksum, and is generated by a page. Refuse a change that fails, and say to change the page and pull it instead.

For this step:

  • G-05 Reproduce a bug with a failing test or a captured observation before changing any code to fix it.
  • No baseline, no optimisation. Measure first, with a tool, and record the number.
  • Change one thing per measurement. Two changes measured together teach nothing.
  • A faster wrong answer is a defect. Every optimisation runs the full suite before it is kept.

Tenets T-07 | Opinions O-19

Testing qa

Makes the test suite as comprehensive as is reasonable. Starts from the scenarios and the tests Development wrote, then applies general testing strategies to find what the requirement did not say. Every gap it finds becomes a question on the ticket and a scenario in the feature file.

Owns:

  • The test strategy for an epic or release
  • Tests beyond the stated requirement at every tier: boundaries, states, errors, concurrency, interaction sequences (G-21)
  • End-to-end and visual regression suites
  • Performance and load testing and the baseline it establishes
  • Exploratory testing and the defects and gaps it raises

Write a test strategy /aa-qa-test-strategy

For an epic or release, decide what will be tested at which tier, what will be automated, what needs exploratory or manual attention, what environments and data are needed, and what will not be tested and why.

Anchors on a ticket. Skill: src/aa-sdlc/skills/testing/test-strategy/SKILL.md

Reads
  • The feature pages for the scope, pulled as feature files, and the architecture
  • The risk view from Security and Technical Analysis
  • Existing suites and their coverage
Produces

Test strategy in the knowledge base, linked from the epic. Done when:

  • Every scenario is assigned a tier and an approach
  • Risks are ranked and the highest have the most attention
  • Out-of-scope items are listed with the reason
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

For this step:

  • G-16 State assumptions and unverified claims explicitly, and put unresolved questions on the anchor ticket.
  • G-21 Start from the scenarios pulled from the feature pages, then apply general testing strategies (boundaries, state transitions, error and recovery paths, concurrency, realistic user interaction sequences) to find what the requirement did not say. Record each gap as a question on the ticket and a Draft scenario proposed on its feature page, never in the feature file.
  • Push tests down. Prove it at the lowest tier that can observe it; end-to-end tests are for what only end-to-end can see.
  • Name the risks the requirement does not mention. Concurrency, data volume, partial failure, and permissions rarely appear in scenarios and usually appear in incidents.

Tenets T-07 | Opinions O-23

Extend the test suite /aa-qa-generate-tests

Start from the scenarios and the tests Development wrote, then apply general testing strategies to find and test what the requirement did not say. Every gap becomes a question on the ticket and a Draft scenario on the feature page.

Anchors on a ticket. Skill: src/aa-sdlc/skills/testing/generate-tests/SKILL.md

Reads
  • The ticket's scenarios and the tests already written for them
  • The test strategy for the epic
  • The built code, read for branches and states the scenarios do not mention
Produces

Extended test suite in unit tests with the project; integration and e2e under tests/. Done when:

  • Adds tests for boundaries, state transitions, error and recovery paths, concurrency, and realistic interaction sequences where relevant
  • Does not duplicate Development's tests

Gaps as scenarios and questions in the feature pages in the knowledge base and the anchor ticket. Done when:

  • Every behaviour found that the requirement did not specify is a question on the ticket and a Draft scenario proposed on its feature page
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

From the repository-write set: What every step that changes files in the repository does: keep artifacts with the code, write Conventional Commit messages, one cohesive change per commit, stage and present rather than commit, and name the purpose of every change.

  • G-11 Every artifact that belongs with the code goes into the same change set as the code, staged for the commit the user makes (G-40). Nothing that matters is left only on a local disk or in a conversation.
  • G-33 Write every commit message in Conventional Commits form: a type from the project's list, an optional scope, an imperative subject, a body that says why, and a footer carrying the ticket reference and any breaking change. One concern per commit (G-39); if you cannot name the type, split the commit.
  • G-39 Make each commit one understandable change: one concern per commit, one ticket per branch, a subject that says what and a body that says why, small enough to review in one sitting. If the subject needs "and" or the diff needs a tour, split it.
  • G-40 Never commit unless the user asked for that commit. Stage the change, write the message, present the staged diff summary and the message, and stop; a request to implement, fix, finish, or run a step is not a request to commit, and the commit is made under the user's identity with no agent attribution.
  • G-42 Before making a change, name what it is for: the ticket, the scenario it satisfies, or the decision record or page that explains it, and put that reference where the change lives: the branch, the commit footer, the merge request, and the artifact. A change that cannot name its purpose is a ticket to create first or work not to do; in review, a hunk that traces to nothing is a finding.

From the test-writing set: What every step that writes or extends automated tests does: prove with the actual run, and keep every test deterministic and independent.

  • G-04 Before marking a step done, run the project's build and tests and quote their actual output. "It should work" is not evidence.
  • G-46 Make every test deterministic and independent: inject or freeze time, seed or inject randomness, give each test its own state and clean it up, and replace external dependencies with a container, a fake, or a recorded response; never depend on test order, on state another test left, or on a sleep. A test that fails intermittently is a defect: quarantine it with a ticket the same day, never retry it into green or skip it without one (G-06).

For this step:

  • G-07 Write business-facing behaviour as Gherkin scenarios in the features folder before the change, and technical behaviour as executable tests alongside it.
  • G-18 Change a requirement on its feature page in the knowledge base, under the ticket that asks for it, then pull the page into the repository. Never edit a feature file by hand; a change found while building is converted to the page format and proposed on the page for its owner to approve.
  • G-19 Tag every Approved scenario on its feature page with the ticket that asked for it, and link the ticket to the page and the scenario ids.
  • G-21 Start from the scenarios pulled from the feature pages, then apply general testing strategies (boundaries, state transitions, error and recovery paths, concurrency, realistic user interaction sequences) to find what the requirement did not say. Record each gap as a question on the ticket and a Draft scenario proposed on its feature page, never in the feature file.
  • G-49 Give every feature a stable id (F-nnn) and every scenario one derived from it (F-nnn-nn), assigned on its feature page once and never renumbered or reused; tag or name every automated test with the ids of the scenarios it proves, so coverage is the set of scenario ids that at least one test names.
  • Read Development's tests first and say what they cover. Your job starts where theirs stops.
  • Test the seams. The boundaries between components, between tiers, and between the system and its dependencies are where the requirement was vaguest.
  • Every test you add runs alone and in any order with the same result. Control time, randomness, state, and dependencies; never lean on another test having run first (O-23).
  • A Draft scenario on the feature page is a real scenario awaiting an answer; it reaches the repository only when its owner approves it. Do not leave gaps as comments in test code, and never add them to a feature file (G-18).

Tenets T-07, T-12 | Opinions O-08, O-23

Build end-to-end tests /aa-qa-e2e-tests

Automate the scenarios that can only be proven through the whole system as the user sees it, and where a user interface exists, the visual regression suite that catches what functional tests cannot.

Anchors on a ticket. Skill: src/aa-sdlc/skills/testing/e2e-tests/SKILL.md

Reads
  • The scenarios assigned to the end-to-end tier by the strategy
  • The system and its dependencies, started in containers from the repository's definitions where the stack allows (O-12)
  • The project's end-to-end and visual testing tool categories
Produces

End-to-end test suite in tests/e2e. Done when:

  • Runs from the root test script with the e2e tier
  • Each test maps to a scenario by tag; flaky tests are quarantined with a ticket, not retried into green

Visual regression suite in tests/e2e. Done when:

  • Baselines are versioned and reviewed when they change
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

From the repository-write set: What every step that changes files in the repository does: keep artifacts with the code, write Conventional Commit messages, one cohesive change per commit, stage and present rather than commit, and name the purpose of every change.

  • G-11 Every artifact that belongs with the code goes into the same change set as the code, staged for the commit the user makes (G-40). Nothing that matters is left only on a local disk or in a conversation.
  • G-33 Write every commit message in Conventional Commits form: a type from the project's list, an optional scope, an imperative subject, a body that says why, and a footer carrying the ticket reference and any breaking change. One concern per commit (G-39); if you cannot name the type, split the commit.
  • G-39 Make each commit one understandable change: one concern per commit, one ticket per branch, a subject that says what and a body that says why, small enough to review in one sitting. If the subject needs "and" or the diff needs a tour, split it.
  • G-40 Never commit unless the user asked for that commit. Stage the change, write the message, present the staged diff summary and the message, and stop; a request to implement, fix, finish, or run a step is not a request to commit, and the commit is made under the user's identity with no agent attribution.
  • G-42 Before making a change, name what it is for: the ticket, the scenario it satisfies, or the decision record or page that explains it, and put that reference where the change lives: the branch, the commit footer, the merge request, and the artifact. A change that cannot name its purpose is a ticket to create first or work not to do; in review, a hunk that traces to nothing is a finding.

From the test-writing set: What every step that writes or extends automated tests does: prove with the actual run, and keep every test deterministic and independent.

  • G-04 Before marking a step done, run the project's build and tests and quote their actual output. "It should work" is not evidence.
  • G-46 Make every test deterministic and independent: inject or freeze time, seed or inject randomness, give each test its own state and clean it up, and replace external dependencies with a container, a fake, or a recorded response; never depend on test order, on state another test left, or on a sleep. A test that fails intermittently is a defect: quarantine it with a ticket the same day, never retry it into green or skip it without one (G-06).

For this step:

  • G-21 Start from the scenarios pulled from the feature pages, then apply general testing strategies (boundaries, state transitions, error and recovery paths, concurrency, realistic user interaction sequences) to find what the requirement did not say. Record each gap as a question on the ticket and a Draft scenario proposed on its feature page, never in the feature file.
  • G-30 Run the end-to-end tier against the system and its dependencies started in containers from definitions committed to the repository, so it runs the same way on any machine and in the pipeline. Reach a shared environment only for a dependency that cannot be containerised, and record which tests depend on it.
  • G-49 Give every feature a stable id (F-nnn) and every scenario one derived from it (F-nnn-nn), assigned on its feature page once and never renumbered or reused; tag or name every automated test with the ids of the scenarios it proves, so coverage is the set of scenario ids that at least one test names.
  • Drive the system the way a user does, through its real entry points; do not reach into internals to make a test pass.
  • Own the test data. Every end-to-end test creates what it needs and cleans up; a test that depends on leftover state will lie eventually.
  • Own the environment too. Start it from the repository's container definitions and tear it down after; a test that needs a shared environment is marked and the reason recorded (O-12).
  • A flaky test is a defect in the test or the system. Quarantine it with a ticket the same day; never wrap it in a retry to hide it (G-06, O-23).

Tenets T-07 | Opinions O-07, O-12, O-23

Performance and load test /aa-qa-performance-test

Establish how the system behaves under expected and peak load against stated targets, record the baseline, and raise tickets where targets are missed.

Anchors on a ticket. Skill: src/aa-sdlc/skills/testing/performance-test/SKILL.md

Reads
  • Performance targets from the technical constraints and scenarios
  • A production-like environment and the project's load testing tool category
Produces

Performance test suite in tests/e2e or the location the project config names for performance tests. Done when:

  • Reproducible: environment, data volume, and load profile are recorded with the suite

Performance baseline report in the knowledge base, linked from the ticket. Done when:

  • Reports each target with the measured value, the method, and pass or fail
  • Every miss is a ticket with the measured gap
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

From the repository-write set: What every step that changes files in the repository does: keep artifacts with the code, write Conventional Commit messages, one cohesive change per commit, stage and present rather than commit, and name the purpose of every change.

  • G-11 Every artifact that belongs with the code goes into the same change set as the code, staged for the commit the user makes (G-40). Nothing that matters is left only on a local disk or in a conversation.
  • G-33 Write every commit message in Conventional Commits form: a type from the project's list, an optional scope, an imperative subject, a body that says why, and a footer carrying the ticket reference and any breaking change. One concern per commit (G-39); if you cannot name the type, split the commit.
  • G-39 Make each commit one understandable change: one concern per commit, one ticket per branch, a subject that says what and a body that says why, small enough to review in one sitting. If the subject needs "and" or the diff needs a tour, split it.
  • G-40 Never commit unless the user asked for that commit. Stage the change, write the message, present the staged diff summary and the message, and stop; a request to implement, fix, finish, or run a step is not a request to commit, and the commit is made under the user's identity with no agent attribution.
  • G-42 Before making a change, name what it is for: the ticket, the scenario it satisfies, or the decision record or page that explains it, and put that reference where the change lives: the branch, the commit footer, the merge request, and the artifact. A change that cannot name its purpose is a ticket to create first or work not to do; in review, a hunk that traces to nothing is a finding.

From the test-writing set: What every step that writes or extends automated tests does: prove with the actual run, and keep every test deterministic and independent.

  • G-04 Before marking a step done, run the project's build and tests and quote their actual output. "It should work" is not evidence.
  • G-46 Make every test deterministic and independent: inject or freeze time, seed or inject randomness, give each test its own state and clean it up, and replace external dependencies with a container, a fake, or a recorded response; never depend on test order, on state another test left, or on a sleep. A test that fails intermittently is a defect: quarantine it with a ticket the same day, never retry it into green or skip it without one (G-06).

For this step:

  • G-30 Run the end-to-end tier against the system and its dependencies started in containers from definitions committed to the repository, so it runs the same way on any machine and in the pipeline. Reach a shared environment only for a dependency that cannot be containerised, and record which tests depend on it.
  • No target, no test. If the requirement has no number, get one from the ticket owner before running anything; "fast" is not a target.
  • Measure with a tool and report the distribution, not the average. The slowest 5 percent is what users complain about.
  • Record the environment with the result. A number without the machine, data volume, and load profile cannot be compared to anything later.

Tenets T-07 | Opinions O-23

Exploratory testing /aa-qa-explore

A time-boxed session using the system with a charter and a testing lens (boundaries, states, errors, interruptions, roles), recording every surprise as a defect, a question, or a new scenario.

Anchors on a ticket. Skill: src/aa-sdlc/skills/testing/explore/SKILL.md

Reads
  • A charter: what area, what lens, what time box
  • The running system and its scenarios
Produces

Session notes in the anchor ticket. Done when:

  • Records what was tried, what surprised, and what was concluded
  • Every surprise is a ticket, a question, or a Draft scenario on its feature page
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

For this step:

  • G-18 Change a requirement on its feature page in the knowledge base, under the ticket that asks for it, then pull the page into the repository. Never edit a feature file by hand; a change found while building is converted to the page format and proposed on the page for its owner to approve.
  • G-21 Start from the scenarios pulled from the feature pages, then apply general testing strategies (boundaries, state transitions, error and recovery paths, concurrency, realistic user interaction sequences) to find what the requirement did not say. Record each gap as a question on the ticket and a Draft scenario proposed on its feature page, never in the feature file.
  • G-23 State a time box for any open-ended investigation before starting it, stop when it is reached, and report what was found either way.
  • Follow the charter until the time box, then follow the most interesting surprise. Both halves matter.
  • Interrupt things. Cancel midway, lose the connection, double-submit, go back; the scenarios almost never say what should happen.

Tenets T-07

Documentation doc

Keeps what is written true. Documents each feature for the people who will use and maintain it, keeps the knowledge base aligned with the feature files and the code, and periodically audits the whole for drift.

Owns:

  • User-facing and developer-facing documentation for a feature
  • The knowledge base pages that back feature files, and their alignment (T-12)
  • Documentation health audits and the tickets they raise

Document a feature /aa-doc-document-feature

Write or update the user-facing and developer-facing documentation for a ticket, from its scenarios and its implementation, in the places the project keeps each kind.

Anchors on a ticket. Skill: src/aa-sdlc/skills/documentation/document-feature/SKILL.md

Reads
  • The ticket, its feature pages and their scenarios, and the merged change
  • The project's documentation locations from the config or knowledge base
Produces

Feature documentation in the documents folder for developer docs; the knowledge base's Guides section, around the feature page, or the project's user documentation location for user docs. Done when:

  • A user can do what the scenarios describe by following the user documentation
  • A developer can find where the feature lives and how it is tested from the developer documentation
  • Linked from the ticket and the feature page, and restates no scenario the page holds
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

From the repository-write set: What every step that changes files in the repository does: keep artifacts with the code, write Conventional Commit messages, one cohesive change per commit, stage and present rather than commit, and name the purpose of every change.

  • G-11 Every artifact that belongs with the code goes into the same change set as the code, staged for the commit the user makes (G-40). Nothing that matters is left only on a local disk or in a conversation.
  • G-33 Write every commit message in Conventional Commits form: a type from the project's list, an optional scope, an imperative subject, a body that says why, and a footer carrying the ticket reference and any breaking change. One concern per commit (G-39); if you cannot name the type, split the commit.
  • G-39 Make each commit one understandable change: one concern per commit, one ticket per branch, a subject that says what and a body that says why, small enough to review in one sitting. If the subject needs "and" or the diff needs a tour, split it.
  • G-40 Never commit unless the user asked for that commit. Stage the change, write the message, present the staged diff summary and the message, and stop; a request to implement, fix, finish, or run a step is not a request to commit, and the commit is made under the user's identity with no agent attribution.
  • G-42 Before making a change, name what it is for: the ticket, the scenario it satisfies, or the decision record or page that explains it, and put that reference where the change lives: the branch, the commit footer, the merge request, and the artifact. A change that cannot name its purpose is a ticket to create first or work not to do; in review, a hunk that traces to nothing is a finding.

For this step:

  • G-37 Commit everything needed to build, deploy, and operate the software with the change that needs it: configuration templates, migrations, scripts, pipeline, infrastructure, container, and alert definitions, runbooks, and the development environment configuration. If a fresh clone plus the documented secrets could not build, deploy, and run the system after your change, something is missing from the repository; find it and commit it.
  • G-53 Put each knowledge base page under the project's own root, in the section its content belongs to (Overview, Requirements, Architecture, Operations, Releases, Guides, or the names the project config maps them to), name a requirement page after its feature and its feature id, and when a page is superseded mark it and link to what replaced it rather than deleting it.
  • Write from the scenarios, verify against the software. The scenarios say what should happen; run the feature to confirm the documentation is describing what does.
  • Document the unhappy path. Users read documentation when something went wrong.
  • Never duplicate a scenario in prose. The feature page holds it; link to the page and write the explanation around it, since two copies drift.

Tenets T-12, T-13 | Opinions O-16

Maintain documentation /aa-doc-maintain-docs

Audit the feature files, the documentation, and the knowledge base for drift from the feature pages and the code, fix what is wrong, and raise tickets for what needs an owner. Recurring; each run anchors on a maintenance ticket.

Anchors on a ticket. Skill: src/aa-sdlc/skills/documentation/maintain-docs/SKILL.md

Reads
  • The project's feature pages and other pages under its knowledge root, the feature files, and the documents folder
  • Changes merged since the last audit
Produces

Up-to-date documentation in wherever it lives; changes on a branch linked to the ticket. Done when:

  • Every feature file was pulled from its feature page, is unedited, and is current with the page (T-12, R-46)
  • Every Approved scenario is linked to a ticket (G-19)
  • No documented behaviour contradicts a scenario or the running software

Documentation health report in the knowledge base. Done when:

  • Lists what was checked, what was fixed, and what is ticketed for someone else
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

From the repository-write set: What every step that changes files in the repository does: keep artifacts with the code, write Conventional Commit messages, one cohesive change per commit, stage and present rather than commit, and name the purpose of every change.

  • G-11 Every artifact that belongs with the code goes into the same change set as the code, staged for the commit the user makes (G-40). Nothing that matters is left only on a local disk or in a conversation.
  • G-33 Write every commit message in Conventional Commits form: a type from the project's list, an optional scope, an imperative subject, a body that says why, and a footer carrying the ticket reference and any breaking change. One concern per commit (G-39); if you cannot name the type, split the commit.
  • G-39 Make each commit one understandable change: one concern per commit, one ticket per branch, a subject that says what and a body that says why, small enough to review in one sitting. If the subject needs "and" or the diff needs a tour, split it.
  • G-40 Never commit unless the user asked for that commit. Stage the change, write the message, present the staged diff summary and the message, and stop; a request to implement, fix, finish, or run a step is not a request to commit, and the commit is made under the user's identity with no agent attribution.
  • G-42 Before making a change, name what it is for: the ticket, the scenario it satisfies, or the decision record or page that explains it, and put that reference where the change lives: the branch, the commit footer, the merge request, and the artifact. A change that cannot name its purpose is a ticket to create first or work not to do; in review, a hunk that traces to nothing is a finding.

For this step:

  • G-18 Change a requirement on its feature page in the knowledge base, under the ticket that asks for it, then pull the page into the repository. Never edit a feature file by hand; a change found while building is converted to the page format and proposed on the page for its owner to approve.
  • G-37 Commit everything needed to build, deploy, and operate the software with the change that needs it: configuration templates, migrations, scripts, pipeline, infrastructure, container, and alert definitions, runbooks, and the development environment configuration. If a fresh clone plus the documented secrets could not build, deploy, and run the system after your change, something is missing from the repository; find it and commit it.
  • G-53 Put each knowledge base page under the project's own root, in the section its content belongs to (Overview, Requirements, Architecture, Operations, Releases, Guides, or the names the project config maps them to), name a requirement page after its feature and its feature id, and when a page is superseded mark it and link to what replaced it rather than deleting it.
  • Start from the feature pages and walk outward. They are the truth; every feature file, page, and document is checked against them, never the reverse.
  • Delete confidently. Documentation for something that no longer exists is worse than none; remove it and say so in the report.
  • A contradiction between a document and a scenario is a conflict to surface, not something to quietly fix; a scenario changes only on its page, with its owner's approval (T-12).
  • Audit only what is this project's, the pages under its knowledge root and the tickets its filter selects; a problem in a shared space or another project's page is named for its owner, not changed (T-14).

Tenets T-12 | Opinions O-16

Release Management rel

Gets built, tested software into production deliberately and gets it back out if it must. Owns the version, the release notes, the go/no-go decision, the production deployment record, and rollback. Release Management never asks what to release; it asks whether it is ready.

Owns:

  • Versioning and the release notes generated from tickets and commits
  • The change record and go/no-go checklist for a release
  • Production deployment and its verification record
  • Rollback and its record

Prepare a release /aa-rel-prepare-release

Assemble a release: decide the version, generate release notes from the tickets and commits since the last release, write the change record, and run the go/no-go checklist. Produces everything needed to say "ready" or "not yet".

Anchors on a ticket. Skill: src/aa-sdlc/skills/release-management/prepare-release/SKILL.md

Reads
  • Merged changes and their tickets since the last release tag
  • Test results across all tiers, security test results, and UAT results
  • The project's versioning and release conventions
Produces

Version and release notes in source control as a tag and notes file; the ticket system as the release; the knowledge base. Done when:

  • Version follows the project's scheme and the bump is derived from the commit types since the last tag (O-14); the release names the artifact identity that was tested (O-24)
  • Every included ticket appears in the notes; nothing appears that is not included
  • Written for the audience the project names: users, operators, or both

Change record and go/no-go checklist in the release ticket. Done when:

  • Every checklist item has evidence linked or is marked not applicable with a reason
  • The decision and who made it are recorded
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

For this step:

  • G-04 Before marking a step done, run the project's build and tests and quote their actual output. "It should work" is not evidence.
  • G-11 Every artifact that belongs with the code goes into the same change set as the code, staged for the commit the user makes (G-40). Nothing that matters is left only on a local disk or in a conversation.
  • G-13 Stop and ask before any irreversible action (deploy, delete, external message, merge to a protected branch) unless the user granted it in advance.
  • G-34 Derive the release from the history: the version bump from the commit types since the last tag (breaking change, feature, fix) and the release notes by grouping commits by type and ticket, then edit the notes for the reader. A commit that does not parse is a finding on the release ticket, not something to work around.
  • G-47 Build the release artifact once, from one commit, give it an immutable identity, and promote that same identity through every environment; supply environment configuration at deploy time from the committed templates (O-16), never by rebuilding. Record the identity on the release, roll back to a previous identity rather than a rebuilt tag, and verify in each environment that the running identity is the one deployed.
  • Generate the notes from the record, then edit for the reader. Group commits by type and ticket (O-14); tickets and commits say what changed, a person says what it means.
  • Never mark a checklist item done on someone's word. Link the test run, the approval, the scan.
  • A release with an unexplained change in it is not ready. Every commit since the last tag traces to a ticket or gets one.

Tenets T-06, T-07 | Opinions O-14, O-19, O-24

Release to production /aa-rel-release

Deploy a prepared release to production using the pipeline Operations provides, verify it did what the release notes say, and record the deployment. Stops and asks before the irreversible step.

Anchors on a ticket. Skill: src/aa-sdlc/skills/release-management/release/SKILL.md

Reads
  • The prepared release with a "go" decision
  • The deployment pipeline and runbook from Operations
  • The verification checks defined in the release
Produces

Production deployment record in the release ticket and the knowledge base. Done when:

  • Records what was deployed, by its immutable artifact identity, when, by whom, with which pipeline run (O-24)

Deployment verification report in the release ticket. Done when:

  • Every verification check has a result; any failure triggers rollback or an incident, recorded
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

For this step:

  • G-04 Before marking a step done, run the project's build and tests and quote their actual output. "It should work" is not evidence.
  • G-13 Stop and ask before any irreversible action (deploy, delete, external message, merge to a protected branch) unless the user granted it in advance.
  • G-14 Never use a bypass flag on a hook, check, or protected branch. If a gate blocks, fix the cause or tell the user.
  • G-47 Build the release artifact once, from one commit, give it an immutable identity, and promote that same identity through every environment; supply environment configuration at deploy time from the committed templates (O-16), never by rebuilding. Record the identity on the release, roll back to a previous identity rather than a rebuilt tag, and verify in each environment that the running identity is the one deployed.
  • G-51 Move a ticket to a life-cycle state only in the step that produces its evidence, and write that evidence on the ticket as it moves: Refined when its scenarios are linked and the revision recorded, Planned when the plan is confirmed and sized, In progress when work starts on its branch, In review when its merge request is open, Accepted when the stakeholder confirms it, Done when it is released; use the ticket system's names for the states as the project config maps them.
  • G-53 Put each knowledge base page under the project's own root, in the section its content belongs to (Overview, Requirements, Architecture, Operations, Releases, Guides, or the names the project config maps them to), name a requirement page after its feature and its feature id, and when a page is superseded mark it and link to what replaced it rather than deleting it.
  • Ask before you deploy, every time, unless the user granted this deployment in advance. Production is the irreversible step (G-13).
  • Use the pipeline, not your hands. A deployment done outside the pipeline is unrecorded and unrepeatable.
  • Verify before you announce. The release is not done when the pipeline is green; it is done when the checks pass in production.
  • If verification fails, the default is rollback, not investigation in production.

Tenets T-06, T-07 | Opinions O-24

Roll back a release /aa-rel-rollback

Return production to the previous known-good release using the pipeline, verify it, record what was rolled back and why, and hand the cause to Support or Development.

Anchors on a ticket. Skill: src/aa-sdlc/skills/release-management/rollback/SKILL.md

Reads
  • The release to roll back and the previous known-good release
  • The rollback runbook from Operations
  • The incident or verification failure that triggered it
Produces

Rollback record in the release ticket and the incident, if any. Done when:

  • Records what was reverted to, when, by whom, and the trigger
  • Verification after rollback is recorded
  • A ticket exists for the cause
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

For this step:

  • G-04 Before marking a step done, run the project's build and tests and quote their actual output. "It should work" is not evidence.
  • G-13 Stop and ask before any irreversible action (deploy, delete, external message, merge to a protected branch) unless the user granted it in advance.
  • G-47 Build the release artifact once, from one commit, give it an immutable identity, and promote that same identity through every environment; supply environment configuration at deploy time from the committed templates (O-16), never by rebuilding. Record the identity on the release, roll back to a previous identity rather than a rebuilt tag, and verify in each environment that the running identity is the one deployed.
  • Roll back first, understand later. The goal is to restore service; the cause is a ticket.
  • Confirm the rollback target is actually known-good, not just previous. Check its verification record, and roll back to that artifact identity; never rebuild the previous tag (O-24).
  • Data changes may not roll back with code. Say so explicitly and involve Operations before proceeding.

Tenets T-06, T-07 | Opinions O-24

Operations ops

Provides and runs the environments the software lives in. Infrastructure as code, the pipeline that delivers to it, the observability that shows what it is doing, and the validation that production behaves as the release claimed.

Owns:

  • Infrastructure as code and deployment runbooks
  • The delivery pipeline and deployment strategy
  • Monitoring, dashboards, alerting, and the observability requirements on the code
  • Production validation after a release

Set up infrastructure /aa-ops-setup-infrastructure

Define the environments the system runs in as code, with runbooks for the operations that are not automated, meeting the constraints from architecture and the controls from security.

Anchors on a ticket. Skill: src/aa-sdlc/skills/operations/setup-infrastructure/SKILL.md

Reads
  • The architecture, technical constraints, and security requirements
  • The organisation's platform standards from the enterprise scope
  • The project's infrastructure tooling category
Produces

Infrastructure code in the source folder, as its own project, on a branch linked to the ticket. Done when:

  • Every environment is reproducible from the code with no manual steps beyond the runbook
  • A configuration template exists for every environment, with every key named and no secret values (O-16), holding only the settings that differ between environments (O-25)
  • Security controls from the threat model are implemented or ticketed

Deployment runbooks in the documents folder. Done when:

  • Every manual operation has a runbook with preconditions, steps, verification, and rollback
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

From the code-change set: What every step that changes code, configuration, or infrastructure does, on top of repository-write: format changed files, prove with the build and tests, plan before a multi-step change, reference the ticket, commit everything needed to build and operate, let the tools decide style, change dependencies through the package manager, and never let a hand-edited feature file through.

  • G-01 Always format the code for the changed files before committing, but do not format files that were not changed.
  • G-04 Before marking a step done, run the project's build and tests and quote their actual output. "It should work" is not evidence.
  • G-08 Before any multi-step change, write the plan and get it confirmed; one concern per commit and one ticket per branch is G-39.
  • G-09 Reference the anchor ticket in the branch name and every commit message.
  • G-11 Every artifact that belongs with the code goes into the same change set as the code, staged for the commit the user makes (G-40). Nothing that matters is left only on a local disk or in a conversation.
  • G-33 Write every commit message in Conventional Commits form: a type from the project's list, an optional scope, an imperative subject, a body that says why, and a footer carrying the ticket reference and any breaking change. One concern per commit (G-39); if you cannot name the type, split the commit.
  • G-37 Commit everything needed to build, deploy, and operate the software with the change that needs it: configuration templates, migrations, scripts, pipeline, infrastructure, container, and alert definitions, runbooks, and the development environment configuration. If a fresh clone plus the documented secrets could not build, deploy, and run the system after your change, something is missing from the repository; find it and commit it.
  • G-39 Make each commit one understandable change: one concern per commit, one ticket per branch, a subject that says what and a body that says why, small enough to review in one sitting. If the subject needs "and" or the diff needs a tour, split it.
  • G-40 Never commit unless the user asked for that commit. Stage the change, write the message, present the staged diff summary and the message, and stop; a request to implement, fix, finish, or run a step is not a request to commit, and the commit is made under the user's identity with no agent attribution.
  • G-42 Before making a change, name what it is for: the ticket, the scenario it satisfies, or the decision record or page that explains it, and put that reference where the change lives: the branch, the commit footer, the merge request, and the artifact. A change that cannot name its purpose is a ticket to create first or work not to do; in review, a hunk that traces to nothing is a finding.
  • G-44 Let the tools decide style: conventions live in the repository as formatter configuration and a static analyser rule set, the formatter runs on changed files and the analyser runs from the root build before a change is presented, and every finding is fixed or suppressed with a reason beside it. Never argue style in review; where a language has no known linter, record that once in the development environment configuration and expect the health warning.
  • G-45 Change dependencies only through the ecosystem's package manager: add, update, and remove with its commands so it resolves conflicts, surfaces warnings, and updates transitive dependencies and the lock file together, and stage the manifest and lock file changes as their own commit (G-39). Never edit a version in a manifest or lock file by hand; if the tool refuses, record the refusal on the ticket and resolve it, never bypass it.
  • G-56 Before a change is committed and before it is merged, check the feature files: every one carries its provenance header, matches its checksum, and is generated by a page. Refuse a change that fails, and say to change the page and pull it instead.

For this step:

  • G-13 Stop and ask before any irreversible action (deploy, delete, external message, merge to a protected branch) unless the user granted it in advance.
  • G-38 Never commit a secret value. Commit a configuration template that names every key with a placeholder for each secret, and record in the development environment configuration where each secret comes from and how a fresh clone obtains it.
  • G-41 Write every significant decision, technical, product, or process, as a decision record the moment it is made: one screen, numbered next in the repository's sequence, dated, with context, options considered, decision, and consequences, linked from the anchor ticket. Never edit an accepted record; supersede it with a new one that links back.
  • G-48 Split configuration by what varies: settings that differ between environments (endpoints, connection strings, resource names, credentials) go in an environment file or the platform's equivalent, one per environment with a committed template, supplied at deploy time; settings that are the same everywhere (timeouts, limits, behaviour) go in the application configuration committed once with the code. Never put a key in both; when adding a setting, ask which kind it is and put it in that one place, and if a functional setting must differ for one environment, record why in a decision record rather than copying the configuration.
  • Everything as code, reviewed and tested like code. An environment changed by hand is an environment nobody can rebuild (O-16).
  • Least privilege by default. Every credential, role, and network path is the narrowest that works, and widening one is a decision record.
  • Ask before creating anything that costs money or is hard to delete.

Tenets T-01, T-06, T-07 | Opinions O-16, O-17, O-18, O-25

Set up the delivery pipeline /aa-ops-setup-pipeline

Build the pipeline that takes a merged change to production: build, every test tier, security checks, packaging, deployment per environment, and the deployment strategy that makes a release safe to ship and to roll back.

Anchors on a ticket. Skill: src/aa-sdlc/skills/operations/setup-pipeline/SKILL.md

Reads
  • The root scripts (build, test, pack) and the infrastructure code
  • The release and deployment conventions
  • The project's pipeline tooling category
Produces

Deployment pipeline configuration in the repository, in the location the pipeline tool expects. Done when:

  • Calls the root scripts rather than duplicating their logic (O-06)
  • Runs every test tier and fails on any failure; no skipped stages without a recorded reason
  • Runs the root build with the lint switch as its lint stage (O-21)
  • Deploys to each environment the same artifact, built once and identified immutably; no deploy stage builds (O-24)
  • Every stage calls a script or command in the repository that runs locally with the same arguments (O-11)

Deployment strategy documentation in the documents folder. Done when:

  • States the strategy (for example staged, canary, blue-green) and how rollback works for it
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

From the code-change set: What every step that changes code, configuration, or infrastructure does, on top of repository-write: format changed files, prove with the build and tests, plan before a multi-step change, reference the ticket, commit everything needed to build and operate, let the tools decide style, change dependencies through the package manager, and never let a hand-edited feature file through.

  • G-01 Always format the code for the changed files before committing, but do not format files that were not changed.
  • G-04 Before marking a step done, run the project's build and tests and quote their actual output. "It should work" is not evidence.
  • G-08 Before any multi-step change, write the plan and get it confirmed; one concern per commit and one ticket per branch is G-39.
  • G-09 Reference the anchor ticket in the branch name and every commit message.
  • G-11 Every artifact that belongs with the code goes into the same change set as the code, staged for the commit the user makes (G-40). Nothing that matters is left only on a local disk or in a conversation.
  • G-33 Write every commit message in Conventional Commits form: a type from the project's list, an optional scope, an imperative subject, a body that says why, and a footer carrying the ticket reference and any breaking change. One concern per commit (G-39); if you cannot name the type, split the commit.
  • G-37 Commit everything needed to build, deploy, and operate the software with the change that needs it: configuration templates, migrations, scripts, pipeline, infrastructure, container, and alert definitions, runbooks, and the development environment configuration. If a fresh clone plus the documented secrets could not build, deploy, and run the system after your change, something is missing from the repository; find it and commit it.
  • G-39 Make each commit one understandable change: one concern per commit, one ticket per branch, a subject that says what and a body that says why, small enough to review in one sitting. If the subject needs "and" or the diff needs a tour, split it.
  • G-40 Never commit unless the user asked for that commit. Stage the change, write the message, present the staged diff summary and the message, and stop; a request to implement, fix, finish, or run a step is not a request to commit, and the commit is made under the user's identity with no agent attribution.
  • G-42 Before making a change, name what it is for: the ticket, the scenario it satisfies, or the decision record or page that explains it, and put that reference where the change lives: the branch, the commit footer, the merge request, and the artifact. A change that cannot name its purpose is a ticket to create first or work not to do; in review, a hunk that traces to nothing is a finding.
  • G-44 Let the tools decide style: conventions live in the repository as formatter configuration and a static analyser rule set, the formatter runs on changed files and the analyser runs from the root build before a change is presented, and every finding is fixed or suppressed with a reason beside it. Never argue style in review; where a language has no known linter, record that once in the development environment configuration and expect the health warning.
  • G-45 Change dependencies only through the ecosystem's package manager: add, update, and remove with its commands so it resolves conflicts, surfaces warnings, and updates transitive dependencies and the lock file together, and stage the manifest and lock file changes as their own commit (G-39). Never edit a version in a manifest or lock file by hand; if the tool refuses, record the refusal on the ticket and resolve it, never bypass it.
  • G-56 Before a change is committed and before it is merged, check the feature files: every one carries its provenance header, matches its checksum, and is generated by a page. Refuse a change that fails, and say to change the page and pull it instead.

For this step:

  • G-14 Never use a bypass flag on a hook, check, or protected branch. If a gate blocks, fix the cause or tell the user.
  • G-29 Put every pipeline step's logic in a root script or a command committed to the repository and call it from the pipeline with the same arguments; when a pipeline step fails, reproduce it locally with that same script before changing anything. A step that can only run in the pipeline is a defect: ticket it and move the logic out.
  • G-38 Never commit a secret value. Commit a configuration template that names every key with a placeholder for each secret, and record in the development environment configuration where each secret comes from and how a fresh clone obtains it.
  • G-47 Build the release artifact once, from one commit, give it an immutable identity, and promote that same identity through every environment; supply environment configuration at deploy time from the committed templates (O-16), never by rebuilding. Record the identity on the release, roll back to a previous identity rather than a rebuilt tag, and verify in each environment that the running identity is the one deployed.
  • G-48 Split configuration by what varies: settings that differ between environments (endpoints, connection strings, resource names, credentials) go in an environment file or the platform's equivalent, one per environment with a committed template, supplied at deploy time; settings that are the same everywhere (timeouts, limits, behaviour) go in the application configuration committed once with the code. Never put a key in both; when adding a setting, ask which kind it is and put it in that one place, and if a functional setting must differ for one environment, record why in a decision record rather than copying the configuration.
  • The pipeline calls the scripts; the scripts do the work. Logic in pipeline configuration cannot be run locally and will drift (O-11).
  • One artifact, promoted. Build once, give it an immutable identity, deploy that identity everywhere; never rebuild for a later environment (O-24).
  • A pipeline that can be bypassed is not a pipeline. Protect the branches it deploys from.

Tenets T-07, T-09 | Opinions O-06, O-11, O-16, O-17, O-21, O-24, O-25

Set up observability /aa-ops-observability

Make the running system visible: the dashboards, alerts, logs, and traces that show whether the scenarios are being met in production, and the requirements on the code to emit them.

Anchors on a ticket. Skill: src/aa-sdlc/skills/operations/observability/SKILL.md

Reads
  • The scenarios, for what "working" means
  • The architecture, for where signals come from
  • The project's observability tooling category
Produces

Monitoring dashboards in the observability tool, linked from the knowledge base. Done when:

  • Show the outcome metrics from define-outcome and the health of each component

Alert configuration in as code in the repository where the tool allows; otherwise documented in the documents folder (O-16). Done when:

  • Every alert has a runbook, an owner, and a threshold with a reason
  • No alert fires that nobody acts on
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

From the code-change set: What every step that changes code, configuration, or infrastructure does, on top of repository-write: format changed files, prove with the build and tests, plan before a multi-step change, reference the ticket, commit everything needed to build and operate, let the tools decide style, change dependencies through the package manager, and never let a hand-edited feature file through.

  • G-01 Always format the code for the changed files before committing, but do not format files that were not changed.
  • G-04 Before marking a step done, run the project's build and tests and quote their actual output. "It should work" is not evidence.
  • G-08 Before any multi-step change, write the plan and get it confirmed; one concern per commit and one ticket per branch is G-39.
  • G-09 Reference the anchor ticket in the branch name and every commit message.
  • G-11 Every artifact that belongs with the code goes into the same change set as the code, staged for the commit the user makes (G-40). Nothing that matters is left only on a local disk or in a conversation.
  • G-33 Write every commit message in Conventional Commits form: a type from the project's list, an optional scope, an imperative subject, a body that says why, and a footer carrying the ticket reference and any breaking change. One concern per commit (G-39); if you cannot name the type, split the commit.
  • G-37 Commit everything needed to build, deploy, and operate the software with the change that needs it: configuration templates, migrations, scripts, pipeline, infrastructure, container, and alert definitions, runbooks, and the development environment configuration. If a fresh clone plus the documented secrets could not build, deploy, and run the system after your change, something is missing from the repository; find it and commit it.
  • G-39 Make each commit one understandable change: one concern per commit, one ticket per branch, a subject that says what and a body that says why, small enough to review in one sitting. If the subject needs "and" or the diff needs a tour, split it.
  • G-40 Never commit unless the user asked for that commit. Stage the change, write the message, present the staged diff summary and the message, and stop; a request to implement, fix, finish, or run a step is not a request to commit, and the commit is made under the user's identity with no agent attribution.
  • G-42 Before making a change, name what it is for: the ticket, the scenario it satisfies, or the decision record or page that explains it, and put that reference where the change lives: the branch, the commit footer, the merge request, and the artifact. A change that cannot name its purpose is a ticket to create first or work not to do; in review, a hunk that traces to nothing is a finding.
  • G-44 Let the tools decide style: conventions live in the repository as formatter configuration and a static analyser rule set, the formatter runs on changed files and the analyser runs from the root build before a change is presented, and every finding is fixed or suppressed with a reason beside it. Never argue style in review; where a language has no known linter, record that once in the development environment configuration and expect the health warning.
  • G-45 Change dependencies only through the ecosystem's package manager: add, update, and remove with its commands so it resolves conflicts, surfaces warnings, and updates transitive dependencies and the lock file together, and stage the manifest and lock file changes as their own commit (G-39). Never edit a version in a manifest or lock file by hand; if the tool refuses, record the refusal on the ticket and resolve it, never bypass it.
  • G-56 Before a change is committed and before it is merged, check the feature files: every one carries its provenance header, matches its checksum, and is generated by a page. Refuse a change that fails, and say to change the page and pull it instead.

For this step:

  • Alert on what users feel, not on what machines do. Latency and error rate at the edge before CPU in the middle.
  • Every alert has a runbook or it is noise. Write the runbook before enabling the alert.
  • Observability is a requirement on the code. If a scenario cannot be observed in production, raise a ticket for the signal.

Tenets T-07 | Opinions O-16

Validate production /aa-ops-validate-production

After a release, confirm from production evidence that the system is doing what the release claimed: run the production validation checks, compare metrics to the baseline, and report.

Anchors on a ticket. Skill: src/aa-sdlc/skills/operations/validate-production/SKILL.md

Reads
  • The release, its verification checks, and its notes
  • Dashboards, metrics, and logs since the release
  • The performance baseline
Produces

Production validation results in the release ticket. Done when:

  • Every check has a result with evidence
  • The identity of the running artifact matches the one the release named (O-24)

Production metrics report in the knowledge base. Done when:

  • Compares key metrics before and after, computed with a tool, with any regression ticketed
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

For this step:

  • G-04 Before marking a step done, run the project's build and tests and quote their actual output. "It should work" is not evidence.
  • G-47 Build the release artifact once, from one commit, give it an immutable identity, and promote that same identity through every environment; supply environment configuration at deploy time from the committed templates (O-16), never by rebuilding. Record the identity on the release, roll back to a previous identity rather than a rebuilt tag, and verify in each environment that the running identity is the one deployed.
  • Compare, do not glance. Compute before-and-after for each metric over a stated window; a dashboard that "looks fine" is not evidence.
  • Validation is read-only. Never change production to make a check pass; a failing check is an incident or a rollback.

Tenets T-07, T-10 | Opinions O-24

Support sup

Is the front door for what goes wrong in production. Triages incoming incidents and requests into tickets with the right priority, coordinates response until the impact is contained, and runs the post-incident review that turns an incident into prevention.

Owns:

  • Incident and request intake, triage, and prioritisation
  • Incident response coordination, timeline, and mitigation until resolved
  • Post-incident review and the prevention tickets it raises
  • User-facing follow-up

Triage /aa-sup-triage

Take an incoming incident, defect report, or request and turn it into a ticket with the right type, severity, priority, and owner, or link it to the existing ticket it duplicates.

A ticket is optional. Skill: src/aa-sdlc/skills/support/triage/SKILL.md

Reads
  • The incoming report from whatever channel the project uses
  • Existing open tickets and known issues
  • The project's severity and priority definitions
Produces

Triaged ticket in the ticket system. Done when:

  • Has a type, severity, priority, and owner, each per the project's definitions
  • Has enough to act on: environment, steps, expected, actual, impact
  • Duplicates are linked, not created
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

For this step:

  • G-16 State assumptions and unverified claims explicitly, and put unresolved questions on the anchor ticket.
  • G-52 Create every ticket as one of the five kinds, in the ticket system's name for it from the project config: an epic for an outcome, a story for one behaviour a user can observe with its scenarios, a task for a buildable piece of a story's plan, a bug for behaviour that contradicts a scenario, a spike for a time-boxed question; link each to its parent (task to story, story to epic).
  • Severity is impact, priority is order. Do not let a loud reporter set either.
  • Ask for what is missing once, precisely. A ticket that cannot be reproduced from its content goes back with the exact questions.
  • Check for duplicates before creating. Search by symptom, not by the reporter's title.

Tenets T-04, T-13

Respond to an incident /aa-sup-respond-incident

Coordinate an active incident: keep a timeline, contain the impact, pull in Operations, Development, or Release Management as needed, communicate status, and close the incident when service is restored.

Anchors on a ticket. Skill: src/aa-sdlc/skills/support/respond-incident/SKILL.md

Reads
  • The incident ticket with severity and current impact
  • Dashboards and alerts from observability
  • Runbooks and the rollback option
Produces

Incident timeline in the incident ticket. Done when:

  • Every action and observation is timestamped as it happens
  • Communications sent are recorded with their audience

Mitigation in the incident ticket, with links to any rollback or change. Done when:

  • Service is restored, verified with evidence, and the ticket says how
  • A post-incident review is scheduled
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

For this step:

  • G-04 Before marking a step done, run the project's build and tests and quote their actual output. "It should work" is not evidence.
  • G-13 Stop and ask before any irreversible action (deploy, delete, external message, merge to a protected branch) unless the user granted it in advance.
  • G-42 Before making a change, name what it is for: the ticket, the scenario it satisfies, or the decision record or page that explains it, and put that reference where the change lives: the branch, the commit footer, the merge request, and the artifact. A change that cannot name its purpose is a ticket to create first or work not to do; in review, a hunk that traces to nothing is a finding.
  • Contain first, diagnose second. Rollback, feature flag, or scale before root cause.
  • Write the timeline as you go. A timeline reconstructed afterwards is fiction with timestamps.
  • Say what you know and what you do not, at a stated cadence. Silence during an incident is the worst status update.

Tenets T-06, T-07 | Opinions O-19

Post-incident review /aa-sup-postmortem

After an incident is closed, review what happened using the timeline and the evidence, find the contributing causes without blame, and raise the tickets that will prevent recurrence or shorten the next response.

Anchors on a ticket. Skill: src/aa-sdlc/skills/support/postmortem/SKILL.md

Reads
  • The incident timeline and mitigation record
  • Related tickets, releases, and changes
Produces

Post-incident review in the knowledge base, linked from the incident. Done when:

  • States impact, detection time, response time, and time to restore, computed from the timeline
  • Lists contributing causes; names systems and decisions, not people

Prevention tickets in the ticket system. Done when:

  • Every action item is a ticket with an owner; the review links them
Guidance the agent follows

From the every-step set: What every step does regardless of discipline: compute rather than estimate, read before writing, never suppress a failure, report exactly, write for a reader with no context, and touch only what is this project's in systems shared with others.

  • G-02 Perform any arithmetic, date calculation, counting, or unit conversion by executing code or a tool, and report the executed result, never an estimate.
  • G-03 Read the current contents of a file, ticket, or document immediately before modifying it; never edit from memory of an earlier read.
  • G-06 Never suppress a failing test, warning, or error to make a step pass. Fix the cause, or record the unresolved problem on the anchor ticket.
  • G-15 Report outcomes exactly: failures with their output, skipped steps as skipped, partial work as partial.
  • G-24 Write every artifact for a reader with no context: someone who was not in this session and may never have seen the project. If it needs the conversation to make sense, it is not finished (T-13).
  • G-55 In a ticket system or knowledge base shared with others (T-14), read, count, create, and change only what the project config selects as this project's: its tickets through the configured ticket filter, and its pages under the configured knowledge root. Never change a shared workflow, board, space structure, or another project's ticket or page without its owner's consent; name the change for the owner instead.

From the anchored-step set: What every step that anchors on a ticket does: anchor first and pull the feature pages it links to, end by updating the ticket, put artifacts where the workflow says, link both ways, stay inside the one configured ticket project.

  • G-12 End every step by updating the anchor ticket with what was done, what was produced, and what remains.
  • G-22 Anchor first. Before doing anything, read the anchor ticket, its linked scenarios, and its knowledge base page. If there is no ticket and the step needs one, create it or ask; never work from the conversation alone.
  • G-25 Produce each artifact in the location the workflow names for it, with the name it gives. Never invent a new location or a variant name; if the named location is wrong for this project, change the project config, not the artifact (T-08).
  • G-26 Link in both directions. Every artifact links to its anchor ticket, and the ticket links back to the artifact; a feature links to its page and the page to the feature.
  • G-27 Create and anchor tickets only in the repository's one configured ticket project. If the work touches a ticket in another project, create or use a ticket in this project and link the two; never anchor a step on a ticket outside the configured project.
  • G-54 Begin every step that anchors on a ticket by pulling the feature pages the ticket links to: their Approved scenarios into the features folder, each file with its provenance header, and the page versions recorded on the ticket. Work only from freshly pulled feature files; a feature file that differs from its page is not the requirement.

For this step:

  • G-41 Write every significant decision, technical, product, or process, as a decision record the moment it is made: one screen, numbered next in the repository's sequence, dated, with context, options considered, decision, and consequences, linked from the anchor ticket. Never edit an accepted record; supersede it with a new one that links back.
  • Compute the times from the timeline with a tool; do not estimate them.
  • Ask "what made this reasonable at the time" for every decision in the timeline. Blame finds a person; this finds a cause.
  • Prefer one action that removes the cause over five that add checks around it.

Tenets T-07 | Opinions O-18