Commit Graph
30 Commits
Author SHA1 Message Date
TirsvadandClaude Sonnet 5.5 ef87e73954 Record the user-owner end-to-end run (run A2) in RC-017
The repeated run with a write:user token passes on both hosts, so
criterion 7 is now Pass; only the README review (criterion 6) remains.

Refs #20

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 01:56:09 +08:00
TirsvadandClaude Sonnet 5.5 55d9ca6eee Add a section banner to .env.example
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 00:27:00 +08:00
TirsvadandClaude Sonnet 5.5 6b1b9c6af4 Ignore config.env
The file holds the Maintainer's own addresses and project details, so it
stays out of the repository like .env.

Refs #31

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 00:25:48 +08:00
TirsvadandClaude Sonnet 5.5 4634048eab Resolve pending commit link for RC-019
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-05 23:18:30 +08:00
TirsvadandClaude Sonnet 5.5 ceaa7d18d8 Code review of MIL-004: document quoting of values, add RC-019
- Say in the README and config.env.example that a value containing " #"
  must be quoted, and pin both behaviours with a test.
- Say in the script header and the README that details set in config.env
  are not asked.
- Record the review as RC-019 and link it in the traceability matrix.

Task: MIL-004#4
Task: MIL-004#5
Refs #30
Refs #31

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-05 23:18:29 +08:00
TirsvadandClaude Sonnet 5.5 75e8e91f9a Let config.env preset the project details
Eight optional keys (PROJECT_NAME, PROJECT_DESCRIPTION, PROJECT_VISIBILITY,
GITEA_OWNER, USE_GITHUB, GITHUB_OWNER, PROJECT_DIRECTORY, ENABLE_PLAN_GATE)
are read and checked with the validators the prompts use. A key that is
present counts as set (only the description may be empty); it is not asked
and the summary marks it "(from config.env)". An invalid value stops the
run before any request and names the key. USE_GITHUB=no skips the GitHub
owner and warns about a stray GITHUB_OWNER. The confirmations stay
interactive. Keys and an example are documented; tests cover every key.

Task: MIL-004#1
Task: MIL-004#2
Task: MIL-004#3
Task: MIL-004#4
Task: MIL-004#5
Closes #27
Closes #28
Closes #29
Closes #30
Closes #31

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-05 22:06:45 +08:00
TirsvadandClaude Sonnet 5.5 de78fb195f Resolve pending commit links for the MIL-004 plan
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-05 21:48:24 +08:00
TirsvadandClaude Sonnet 5.5 2a6bb8e8af Plan MIL-004: project details preset in config.env
Add objective 8 to the Business Case, US-001.04, extensions 3a and 3b of
UC-001 and the matching SSD, OC, SD, DM-001 and DM-002 notes. Add the phase
to the Project Plan and the milestone MIL-004 with eight Go/No-Go criteria
and five tasks (issues #27 to #31). Review recorded in RC-018.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-05 21:44:10 +08:00
TirsvadandClaude Sonnet 5.5 f34affa071 Resolve pending commit links for RC-017 and MIL-002
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-05 21:43:01 +08:00
TirsvadandClaude Sonnet 5.5 613a288dea Fix the defects found by the live end-to-end run, add RC-017
- Close stdin for ssh, git, curl and the framework scripts, so a real ssh
  no longer swallows answers meant for later prompts.
- Count LICENSE and LICENSE + README.md (what Gitea creates) as content
  the script made, so a partly created repository can be reused.
- Document the observed token scopes (write:user for user-owned Gitea
  repositories) and the Gitea README.md in the README.
- Correct criterion 2 of MIL-002 (new Proposed version row).
- Record the run and the final security review as RC-017.
- Tests: stdin regression, initial_only reuse, other files count as
  content, example config needs its address edited.

Task: MIL-003#6
Task: MIL-002#1
Refs #20

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-05 21:41:47 +08:00
TirsvadandClaude Sonnet 5.5 0030334e5e Add the local project, framework submodule, hooks and templates
After the repositories and the mirror, the script now creates the local
project: the directory, git on main, credential-free origin (and github)
remotes, and the license history from Gitea. Then it adds the framework as
a submodule over SSH, installs its skills and git hooks once (plan gate
optional), and copies the AGENTS.md and artifact registry templates.

Nothing is overwritten without a yes: an existing directory, core.hooksPath,
AGENTS.md or docs/artifact-registry.md each ask first (default no). Without
SSH the framework steps can only be skipped, after a yes. No commit is made
in the new project. New optional config key FRAMEWORK_REPO.

New library files git.sh, localproject.sh and framework.sh. Tests run real
git against local bare repositories that stand in for Gitea and the
framework, with a private git configuration (769 checks). The README is now
the full guide.

Task: MIL-003#1
Task: MIL-003#2
Task: MIL-003#3
Task: MIL-003#4
Task: MIL-003#5
Refs #15
Refs #16
Refs #17
Refs #18
Refs #19

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-05 15:54:02 +08:00
TirsvadandClaude Sonnet 5.5 736cdb42fc Add the GitHub and Gitea steps and split the script into library files
Dry run by default: the script reads from both hosts (tokens, owners,
names, license, SSH) and prints a plan; --apply creates the repositories
and the Gitea -> GitHub push mirror after a final yes. Choosing GitHub
applies the AGPL-3.0 license to the Gitea repository. A failed step is
reported with what exists and how to continue; nothing is ever deleted.

create-project.sh is now the entry point; the work lives in src/lib/, one
responsibility per file. .gitignore gets !src/lib (the Python template
ignores any lib/ folder). Tests grow to 599 checks, with a stub curl and
ssh, and guards for the file structure.

Task: MIL-002#1
Task: MIL-002#2
Task: MIL-002#3
Task: MIL-002#4
Task: MIL-002#5
Task: MIL-002#6
Refs #9
Refs #10
Refs #11
Refs #12
Refs #13
Refs #14

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-05 15:29:10 +08:00
Tirsvad 903c948d85 Merge pull request 'MIL-001 review fixes: stop tokens leaking under bash -x, move script to src/, RC-016' (#24) from mil-001-foundation into main
TirSystem/github-action: Sync GitHub mirror metadata / sync-metadata (push) Successful in 5s
Reviewed-on: #24
2026-10-05 08:23:31 +02:00
TirsvadandClaude Sonnet 5.5 9413ec3e4c Point defaults and tests at the new script location
Follow-up to the move: config.env and .env default to the project root
(the parent of src/), the header says so, and the tests use the new path.
Add tests for the location and the defaults.

Task: MIL-001#2

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-05 14:22:19 +08:00
TirsvadandClaude Sonnet 5.5 87e399188b Move create-project.sh to src/
Code belongs in src/, where the plan gate applies. config.env and .env
still default to the project root (the parent of src/). Add tests for the
location and the defaults.

Task: MIL-001#2

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-05 14:21:40 +08:00
Tirsvad 47e41705b3 Merge remote-tracking branch 'origin/mil-001-foundation' into mil-001-foundation 2026-10-05 14:17:48 +08:00
TirsvadandClaude Sonnet 5.5 bede04c841 Resolve pending commit link in RC-016
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-05 14:17:09 +08:00
TirsvadandClaude Sonnet 5.5 f4a397c1ec Fix tracing leak and review findings in the MIL-001 script
Switch off set -x (it printed tokens), accept a byte order mark, strip the
carriage return jq adds on Windows, return the first key without jq, rename
the boolean keys, and cite the task in the header. Add regression tests and
review record RC-016.

Task: MIL-001#2
Task: MIL-001#3
Task: MIL-001#4
Task: MIL-001#6

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-05 14:17:04 +08:00
Tirsvad 76b91c3caf Merge branch 'main' into mil-001-foundation 2026-10-05 08:02:35 +02:00
Tirsvad 4b6e5b6c67 Merge pull request 'MIL-001 Foundation: config parsing, HTTP helper, prompts and tests' (#22) from mil-001-foundation into main
TirSystem/github-action: Sync GitHub mirror metadata / sync-metadata (push) Failing after 3s
Reviewed-on: #22
2026-10-05 08:00:40 +02:00
TirsvadandClaude Sonnet 5.5 102dd2473d Add the RepoFoundry foundation: config parsing, HTTP helper, prompts, tests
create-project.sh validates config.env and .env (parsed, never sourced),
checks the required tools, asks for the project details and prints a
summary. It makes no network call and no change on disk yet.

- config.env.example and .env.example hold placeholders only
- tokens go through a private curl config file, never the command line
- tests run in private directories with a stub curl; shellcheck and shfmt
  are part of tests/run-tests.sh

Task: MIL-001#1
Task: MIL-001#2
Task: MIL-001#3
Task: MIL-001#4
Task: MIL-001#5
Task: MIL-001#6
Closes #3
Closes #4
Closes #5
Closes #6
Closes #7
Closes #8

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-05 13:59:08 +08:00
Tirsvad 5ac230df7e Merge pull request 'Link synced milestones in the project plan' (#21) from planning into main
TirSystem/github-action: Sync GitHub mirror metadata / sync-metadata (push) Failing after 4s
Reviewed-on: #21
2026-10-05 07:50:59 +02:00
TirsvadandClaude Sonnet 5.5 d727f7ae60 Link synced milestones in the project plan
Add the Gitea milestone links (ids 43 to 45) to the Gateway Schedule after
the issue sync: MIL-001 -> #3 to #8, MIL-002 -> #9 to #14,
MIL-003 -> #15 to #20.

Refs: #3 #4 #5 #6 #7 #8 #9 #10 #11 #12 #13 #14 #15 #16 #17 #18 #19 #20

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-05 13:49:30 +08:00
Tirsvad 7508db7bea Merge pull request 'Plan RepoFoundry: baseline, UC-001 artifacts and reviews' (#2) from planning into main
TirSystem/github-action: Sync GitHub mirror metadata / sync-metadata (push) Failing after 3s
Reviewed-on: #2
2026-10-05 07:47:30 +02:00
TirsvadandClaude Sonnet 5.5 bc90f10151 Resolve pending commit links in planning documents
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-05 13:41:48 +08:00
TirsvadandClaude Sonnet 5.5 02875aee5f Accept planning baseline and UC-001 artifacts
Add the Use Case Diagram, Domain Model (use case and project), Dictionary,
Operation Contract, Sequence Diagram, review records RC-001 to RC-015 and
the Traceability Matrix. Split US-001 into one story per milestone, make
GitHub optional (AGPL license applied when chosen), and accept BC-001,
SA-001, PP-001, UCD-001, US-001, UC-001, SSD-001, DM-001, DM-002, OC-001,
SD-001, DICT-001 and MIL-001 to MIL-003 after review.

Refs: no issues synced yet (sync-project.sh dry run only)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-05 13:41:36 +08:00
Tirsvad b7b1a23dc1 Merge pull request 'Plan RepoFoundry: business case, stakeholders, plan, milestones, UC-001' (#1) from planning into main
TirSystem/github-action: Sync GitHub mirror metadata / sync-metadata (push) Failing after 6s
Reviewed-on: #1
2026-10-05 06:34:57 +02:00
TirsvadandClaude Sonnet 5.5 fa3beaf1c1 Point commit links at the pushed planning commit
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-05 12:32:32 +08:00
Tirsvad 424f14f4f5 Plan RepoFoundry: business case, stakeholders, plan, milestones, UC-001
Add the planning baseline for RepoFoundry (create-project.sh), which
creates GitHub and Gitea repositories, a Gitea -> GitHub push mirror and
a local project with the SQA-QC-Framework.

- BC-001 Business Case and SA-001 Stakeholder Analysis (S01, S02, S03)
- PP-001 Project Plan: three phases, 2026-10-05 to 2026-11-13 (proposed)
- MIL-001 Foundation, MIL-002 Repositories and Mirror,
  MIL-003 Scaffold and Release, with 18 task rows
- US-001, UC-001 "Create a new project" and SSD-001
- Registry: PO language en; PP, MIL, US, UC and SSD rows added

Decisions recorded: origin uses HTTPS from GITEA_URL unless the SSH test
on port 10022 passes; S01 and S02 are held by one person for now.

Refs: no issues synced yet (sync-project.sh dry run only)
2026-10-05 12:30:29 +08:00
Tirsvad 3b4432e6fe Initial commit 2026-10-05 06:00:35 +02:00