aenvs/.docs/00-initial-qa-session/q-001.md

2.4 KiB

Unclear Functionality Questions

  1. Version semantics:

    • What is relationship between branch_name and version? we're making git symbolic-ref --short HEAD to inspect current branch before version sync and add current branch to the existed one on the server this field if the branch was changes. it's just a visual strings to identify on which git branches this version was used, so it's easier to the user to decide what version's is needed; while merge operation user's current branch overrides version's branch with an interactive prompt, that lets user to use current one or write a string with a custom one
  2. Sync behavior:

    • "if version is inactive, server responds w/ latest version data" — what if NO active version exists? Answer: provide some variants

    • "recursively asks what environments to save" — what's the UX flow here? Interactive prompts? Answer: interactive prompts, f.e.:

    ENVIRONMENT NAME:
    VARIABLE NAME:
    version timestamp 1: -
    version timestamp 2: WABALABUDABDAB
    version timestamp 3: BABRAKADABRA
    please enter the number of the valid VAR for a new version;
    
  3. Merge behavior:

    • What happens to source versions after merge? Deleted? Marked inactive? Answer: source versions should be marked as inactive and cannot be updated anymore;

    • -v, --version takes "list of versions" — what format? Comma-separated? Multiple flags? Answer: just space separated list of version's timestamps;

  4. Config scope:

    • Is api_key per-project or can it be global (e.g., in ~/.config/aevs/)? Answer: api_key's scope is a user's scope; user management would be implemented later

    • Can config inherit from parent directories? Answer: do not understand the question;


Missing Information

  1. Error handling: What happens on network failure during sync/merge? Answer: failing error w/ the previous state of the entities;
  2. Authentication: How is api_key validated? What permissions does it grant? Answer: for now let api_key be a hardcoded value, we'd create web server later;
  3. Conflict resolution: In sync, what if local and remote have conflicting changes? Answer: We've previously discussed merging conflicts flow. If it's not a merge operation we're going through a conflict resolution flow, but there'd be new version created as local, as at the server;