Repository navigation
v0.27.8
0.27.7 as it was meant to ship. Its publish stopped on four new tests whose repositories had no git identity on the CI runners; the Docker image 0.27.7 was published, the npm package was not.
Fixed
- The tests of REQ-264, REQ-267, REQ-269 and REQ-271 give their repositories a git identity, as the other harness tests do.
- The REQ-266 test compares real paths as Windows names them (
RUNNER~1andrunneradminare one folder), and the coverage run in CI has a larger heap: on macOS it ran out once every test had passed.
[0.27.7] � 2026-10-28
After the sixth truck-flote run: the harness agent can write, a Docker check works in a worktree, every gate step is seen while it runs, and a reviewed draft no longer turns the branch red.
Fixed
- The client's brief at the root goes below the front matter (REQ-259): with
brief.mdpushed first and forja's template indocs/brief.md,draft --agentwrote the front matter over the "Paste the client's brief here" placeholder and the person pasted the text by hand.draftnow puts the root file's text there first, keeps the root file, and says so; a body the person wrote is left alone. BRIEF-SETUP.mdis removed once the front matter is complete (REQ-260): it stayed untracked, and the harness refuses a tree that is not clean.- D6 reads a value made of listed parts (REQ-261): "1234-BCD � Ejes" and "Luc�a Mart�n � E000001234567890" were unlisted although every part was; a value joined with
�,�or�is listed when each part is. - An answer in
questions.mdno longer leaves its requirement blocked unnoticed (REQ-262, REQ-263): the draft said Ready to review andstatuskept four answered requirements "Waiting for an answer". The checklist now reports each answered question whose requirement is stillNeeds Clarification, with the fix and--agent, andstatuslists it under "Answered � update the spec". - The
sbomcheck writes the bill of materials of a Quarkus application (REQ-276): its pom skips deploy, and CycloneDX then wrote nothing ("Skipping CycloneDX goal, because module skips deploy"), so the dependency scan had nothing to read. It now runs with-Dcyclonedx.skipNotDeployed=false. - Every gate step is seen while it runs (REQ-273..REQ-275):
harness runprintedattempt 1/3and nothing more for 19 minutes, and/livestayed empty, while a semgrep check hung. The setup command,validate --strict, the end-to-end test, the architecture check, the test command and each quality check are now agate-startevent and agateevent with itsms, written as each happens � the quality checks used to be reported only once every check of the stage had run � and astarted �andpassed � in 3m 05sline of the run, without--verboseand whatever the agent command is./livenames the step that is running, with its image and how long it has run, and the studio's Build moves to Revisa la calidad when a quality check starts. - The harness gives Claude Code permission to write (REQ-264):
claude -p < {prompt_file}, the command the docs gave, wrote nothing in print mode and spent three attempts on "the agent produced no files". The harness now adds--permission-mode acceptEditsright afterclaude, as the drafting commands do, and says so; an attempt that writes nothing ends the requirement instead of running the same command again, pointing atdocs/agent-setup.md. - A
./inside quotes stays as written on Windows (REQ-265): an agent's allowance'Bash(./mvnw:*)'reached Claude Code as'Bash(.\mvnw:*)'. - Docker checks work in the harness's worktrees (REQ-266): a worktree's
.gitnames a host folder the container does not have, so semgrep failed to list files and hung until its 15-minute timeout. The repository's git folder is now mounted read-only, withGIT_DIRandGIT_WORK_TREEpointing at the worktree. - A check that could not run is reported to you, not to the agent (REQ-267): a gate check that is to write SARIF and wrote none � it timed out or failed first � stops the requirement with its output, instead of telling the agent to "fix what the check found" for two more attempts.
- The reviewer and the adversary read a draft's requirement (REQ-268): their prompts said
spec.mdhad no section for a requirement of a reviewed, unarchived draft; they are now built from the project as the harness judges it, like the implementer's. harness reportcounts each requirement once (REQ-269): a failed run and a passing one of the same requirement read "1 of 2 passed". The latest outcome counts, every run's time stays in the cost, and a run stopped by hand is in the ledger, its requirement reported as stopped.- The studio's report judges the project as
checkdoes (REQ-270): after--chaindelivered a draft's requirement, the report said "No pasa" for a feature the written matrix has no row for until the draft is archived. - The agent is kept once (REQ-271):
specgate config set agent "<command>"writes it toharness.config.yaml, with the permission above;statusnames the step while it is missing, and aharness run --agent �ends with the command that keeps it.